Мне нужно, чтобы получить 64-разрядную мало-Endian целое как байт-массив с верхними 32 битами обнуленных и нижние 32 бит, содержащих некоторое целое число, пусть говорят, что 51.Как правильно получить мало-Endian целое число в Java
Теперь я делаю это следующим образом:
byte[] header = ByteBuffer
.allocate(8)
.order(ByteOrder.LITTLE_ENDIAN)
.putInt(51)
.array();
Но я не уверен, что это правильный путь. Правильно ли я это делаю?
Почему вы ожидаете, что 64 бита в int? «Int» - 32 бита. Кроме того, 'ByteBuffer.allocate' занимает несколько _bytes_, а не число _bits_, поэтому ваш' ByteBuffer' имеет шестьдесят нулей _bytes_ в конце. –
Я просто процитировал то, что у меня есть в описании API. В нем сказано: «64-битное мало-конечное целое число, верхние 32 бита зарезервированы для флагов (обнуление), более низкие 32 бита представляют размер предстоящих данных». И, спасибо, это действительно моя ошибка, чтобы выделить 64 байта вместо бит. – udenfox
Возможно, вы захотите использовать длинный, если хотите представить 32 бита с указанием положительного числа, такого как размер (конечно, вы можете указать все возможные размеры, используя также 31 бит). –