Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [java] Funzioni conversione da int a byte non funzionanti

    Per convertire un int a byte[] e viceversa ho usato questi 2 metodi ma non funzionano.
    Sapete quali sono gli errori?
    Grazie
    codice:
    public static byte[] toByteArray(int integer, byte[] array)
    	 {
    	   for (int i = 0; i < array.length; ++i)
    	     	array[i] = (byte)((integer >> (i*8))%0xFF);
    	   return array;
    	   
    	   
    	 }
    	public static int toInt(byte[] array)
    	 {
    	int i = 0;
    	int pos = 0;
    	for(int j=0;j<array.length;j++){
    	i += ((array[pos++]) << (j*8)); 
    	}
    	
    	return i;
    	 }

  2. #2
    >>> integer >> (i*8))%0xFF

    0x100 (credo...)
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Con la maggioranza dei numeri funziona.
    Però non sò perche con 246 trasformandolo in byte[] epoi di nuovo in int mi ritorna -10.

    I metodi modificati sono questi:
    public static byte[] toByteArray(int integer, byte[] array)
    {
    for (int i = 0; i < array.length; ++i)

    array[i] = (byte)((integer >> (i*8))%0x100);
    return array;


    }
    public static int toInt(byte[] array)
    {
    int i = 0;
    int pos = 0;
    for(int j=0;j<array.length;j++){
    i += ((array[pos++]) << (j*8));
    }
    return i;
    }

  4. #4
    Ho provato a eseguire il tuo programma.
    Il problema (aldila' di quello che ti ho gia' segnalato) e' che i byte (e tutti i numeri) in java sono con segno.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    P.S. A cosa ti serve pos?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    Come faccio a metterli senza segno???
    pos è solo un indice

  7. #7
    Non puoi, che io sappia.
    Li devi convertire quando vai a visualizzarli o a rimetterli in intero.

    codice:
        public static int toInt(byte[] array) {
            int i = 0;
            for(int j=0;j<array.length;j++){
                i += ((array[j]>=0 ? array[j] : array[j]+256) << (j*8));
            }
            return i;
        }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.