вот метод
byte [] bytes = { 0, 6, 36, -84, 113, 125, -118, -47 };
System.out.println(ByteBuffer.wrap(bytes).getLong());
вывод:
1729172917291729
почему ответ именно такой? откуда появляются такие числа?
Это не числа. Это число, одно. Long - это 8 байт. В буфер вы передали 8 байт и получили на выходе одно число, полученное от объединения байт.
Вот рассмотрим например байты. 1, 2, 3, 4. В двоичном виде это будет 00000001, 00000010, 00000011, 00000100. С помощью ByteBuffer объединяются они в одно целое:
00000001, 00000010, 00000011, 00000100 = 00000001000000100000001100000100
В десятичном виде это будет число 16909060. Так и у вас. Только вы взяли 8 байт, и объединили их в одно число типа long.
Не забывайте, что компьютер работает только с двоичными числами.
Если вам нужно каждый байт преобразовать к long, то нужно обойти каждое число в цикле. И обратите внимание, если будете пользоваться обычным cast типа (long) -1234
, то будет сохраняться десятичное представление, если вашим способом - двоичное. Это происходит из-за того, что один бит (самый старший) используется для хранения знака.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу найти информацию как можно в hibernate работать с двумя источниками данныхС двумя разными базами данных
Помогите подробно разобрать этот код - я не понимаю здесь в метод вложен метод?