gpt4 book ai didi

JavaScript:将 3 个字节的缓冲区读取为整数

转载 作者:IT老高 更新时间:2023-10-28 23:01:01 29 4
gpt4 key购买 nike

假设我有一个十六进制数据流,我想将其分成 3 字节的 block ,我需要将其读取为整数。

例如:给定一个十六进制字符串 01be638119704d4b9a 我需要读取前三个字节 01be63 并将其读取为整数 114275。这是我得到的:

var sample = '01be638119704d4b9a';
var buffer = new Buffer(sample, 'hex');
var bufferChunk = buffer.slice(0, 3);
var decimal = bufferChunk.readUInt32BE(0);

readUInt32BE 适用于 4 字节数据,但在这里我显然得到:

RangeError: index out of range
at checkOffset (buffer.js:494:11)
at Buffer.readUInt32BE (buffer.js:568:5)

如何正确读取 3 字节为整数?

最佳答案

如果您使用的是 node.js v0.12+ 或 io.js,则有 buffer.readUIntBE()它允许可变数量的字节:

var decimal = buffer.readUIntBE(0, 3);

(注意,Big Endian 是 readUIntBE,Little Endian 是 readUIntLE)。

否则,如果您使用的是旧版本的 Node ,则必须手动执行(当然要先检查边界):

var decimal = (buffer[0] << 16) + (buffer[1] << 8) + buffer[2];

关于JavaScript:将 3 个字节的缓冲区读取为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911185/

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