Почему readBigInt64BE возвращает число, которое не равно его первоначальному шестнадцатеричному значению? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть следующий буфер:

<Buffer bf 58 e6 c6 00 8f fd 32 84 0f d1 d4 bd 7f ba 95 fa f1 b0 af cf 2a 54 43 49 f5 0f 42 e6 c3 60 e2 a5 1b 05 61 30 3a 75 50 42 60 ff ff 2e 57 d7 1f 8a da ... 269 more bytes>

Почему следующие значения не равны?

0xbf58e6c6008ffd32 //13788023997282124000
Number(buffer.readBigInt64BE(0)) // -4658720076427429000

Неудивительно, что версия с прямым порядком байтов также возвращает другое число:

Number(buffer.readBigInt64LE(0)) // 3674250104503949300

1 Ответ

0 голосов
/ 16 апреля 2020

0xbf58e6c6008ffd32 считается беззнаковым целым (почему, я не знаю, мне нужно будет это выяснить), поэтому мне нужно прочитать большое 64-разрядное целое число без знака (readBigUInt64BE вместо readBigInt64BE).

...