gpt4 book ai didi

javascript - 为什么位缓冲区和缓冲区给我不同的输出?

转载 作者:行者123 更新时间:2023-12-03 02:18:47 25 4
gpt4 key购买 nike

我试图了解以下代码发生了什么。

console.log(buffer);
>>> <Buffer d6 16 06 37 f7 42 56 f6 45 56 37 47 27 e3 22 36 07 07 e0 c0 b9 85 d9 01 58 db 1b 59 19 db dc 0b 1c 5b 58 5e 99 dc cb 58 dd 1c dd 5b db 17 1c 5b 58 5e ... >

如果我将一些十六进制小数转换为二进制,我会得到以下位。

1101 0110 0001

但我随后将其转换为比特流( https://github.com/inolen/bit-buffer ),并读取这些位。

const test = new bitBuffer.BitStream(buffer);
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));
console.log(test.readBits(1, false));

0110 1011 0110

为什么这些位不准确?想知道缓冲区的十六进制是否只是内存地址?希望有人能澄清一下。 :-)

最佳答案

首先,缓冲区不是按十六进制数字分组,而是按八位字节(字节)分组,因此您应该将这些位按 8 组而不是 4 组分组。

这些组中的每一个都只是简单地颠倒过来。这是因为人类可读的表示是 big-endian ,当您读取索引 0 处的位时,它就是最右边的。因此,如果您从流中逐位读取它们,您将从右向左读取每个字节。

关于javascript - 为什么位缓冲区和缓冲区给我不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com