Как добавить два байта в int? - PullRequest
3 голосов
/ 11 ноября 2011

Я пытаюсь добавить два байта с шестнадцатеричными значениями и сохранить их в целое число. Так что, очевидно, все будет беззнаковых значений. Я приведу пример, потому что это намного легче увидеть.

два байта 0x20 0x07

Integer Редактировать: К сожалению, я сделал огромную ошибку здесь. Извините за все замешательство. Я хочу хранить целое число 2007, а не 0x2007. Я действительно сожалею об этом.

Есть ли способ сделать это без преобразования байта в строку, добавления и переключения на int? или это преобразование в строку это единственный способ?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2011

Вы можете попробовать

byte b1 = (byte) 0x90;
byte b2 = (byte) 0xF7;

int i = ((b1 & 0xFF) << 8) | (b2 & 0xFF);

Однако, если вы используете DataInputStream или ByteBuffers, вам обычно не нужно этого делать. Просто используйте getShort в обоих случаях.

3 голосов
/ 11 ноября 2011

Да, просто сдвиньте b1 на 8 бит и добавьте его к b2:

byte b1 = 0x20;
byte b2 = 0x07;

int i1 = (b1 << 8) + b2; // gives 0x2007

// alternatively
int sameInt = b1 * 256 + b2; // gives 0x2007
...