2013-04-01 2 views
1

Как разбить переменную на отдельные байты в java? У меня есть, например, следующий фрагмент кода в C++:Получить отдельные байты из многобайтовой переменной в java

unsigned long someVar; 
    byte *p = (byte*)(void*) someVar; // byte being typedef unsigned char (from 0 to 255) 

    byte *bytes = new byte[sizeof(someVar)]; 

    for(byte i = 0;i<sizeof(someVar);i++) 
    { 
     bytes[i] = *p++; 
    } 

    .... //do something with bytes 

Я хочу сделать то же самое под Java, но я не могу найти очевидное решение.

+1

Это C++, а не C. –

+0

@ ChristofferHammarström, абсолютно верно. Измененный вопрос. –

+0

Вы ищете что-то вроде этого? http://stackoverflow.com/questions/1936857/convert-integer-into-byte-array-java – Dinakar

ответ

3

Существует два способа сделать это с помощью класса ByteBuffer. Один из них - создать новый массив байтов динамически.

long value = 123; 
byte[] bytes = ByteBuffer.allocate(8).putLong(value).array(); 

Другим является запись в существующий массив.

long value = 123; 
byte[] bytes = new byte[8]; 

ByteBuffer.wrap(bytes).putLong(value); 

// bytes now contains the byte representation of 123. 
+0

Вопрос был несколько иным: если у вас есть переменная - как получить доступ к ней побайтовым образом – pmod

+0

Вы можете обернуть переменную в ByteBuffer и вызвать get(), которая вернет значение байта байтом. – Tansir1

+0

Спасибо, это было то, что мне было нужно, как указано в ссылке, приведенной в одном из комментариев. –

0

Если вы используете Guava, есть удобство Longs.toByteArray. Это просто обертка для ответа Джона ByteBuffer выше, но если вы уже используете Guava, это немного «лучше» для чтения.

Смежные вопросы