Перевод из byte в long java

170
31 января 2018, 14:10

вот метод

byte [] bytes = { 0, 6, 36, -84, 113, 125, -118, -47 };
    System.out.println(ByteBuffer.wrap(bytes).getLong());

вывод:

1729172917291729

почему ответ именно такой? откуда появляются такие числа?

Answer 1

Это не числа. Это число, одно. Long - это 8 байт. В буфер вы передали 8 байт и получили на выходе одно число, полученное от объединения байт.

Вот рассмотрим например байты. 1, 2, 3, 4. В двоичном виде это будет 00000001, 00000010, 00000011, 00000100. С помощью ByteBuffer объединяются они в одно целое:

00000001, 00000010, 00000011, 00000100 = 00000001000000100000001100000100

В десятичном виде это будет число 16909060. Так и у вас. Только вы взяли 8 байт, и объединили их в одно число типа long.

Не забывайте, что компьютер работает только с двоичными числами.

Если вам нужно каждый байт преобразовать к long, то нужно обойти каждое число в цикле. И обратите внимание, если будете пользоваться обычным cast типа (long) -1234, то будет сохраняться десятичное представление, если вашим способом - двоичное. Это происходит из-за того, что один бит (самый старший) используется для хранения знака.

READ ALSO
Почему тэг th:text не срабатывает

Почему тэг th:text не срабатывает

У меня есть следующий код adminjsp:

210
hibernate multi source data

hibernate multi source data

Не могу найти информацию как можно в hibernate работать с двумя источниками данныхС двумя разными базами данных

206
Разобрать код на java

Разобрать код на java

Помогите подробно разобрать этот код - я не понимаю здесь в метод вложен метод?

248
Java распределение запросов

Java распределение запросов

Стакчане здраствуйтеНаписал сервис rest

236