我有一个api返回的数据,如下所示:
var body = data;
数据等于:
ByteBuffer {
buffer:
<Buffer 09 62 61 1f 04 01 00 10 01 11 61 99 5d 05 01 00 10 01>,
offset: 0,
markedOffset: -1,
limit: 18,
littleEndian: true,
noAssert: false
}
我尝试将不同的函数传递给它,以尝试从中获取数据。 (我期望至少有2个ID。)这是到目前为止我尝试过的结果及其结果:
var message = body.readUint32(); // 526475785
var message = body.readCString(); // [blank]
var message = body.readUint8(); // 16
var message = body.readUint64(); // Long { low: -1721691903, high: 66909, unsigned: true }
我也尝试过:
var message = new ByteBuffer(8 + 8 + 4 + Buffer.byteLength(body.buffer) + 1, ByteBuffer.LITTLE_ENDIAN);
返回:
ByteBuffer {
buffer:
<Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>,
offset: 0,
markedOffset: -1,
limit: 39,
littleEndian: true,
noAssert: false
}
我也尝试只传递“身体”,但这根本没有用。我应该以不同的方式解析吗?我到底应该更改什么才能获取数据?谢谢
答案 0 :(得分:1)
您必须先翻转字节缓冲区,以使ByteBuffer
做好读取操作的准备。
在缓冲区准备好进行读取操作之后,使用readIString
以字符串形式读取整个缓冲区,如果期望缓冲区具有其他值,则可以使用其他操作,例如readInt32
而不是字符串(我假设是字符串,因为它来自API)。
body.flip().readIString();
指向ByteBuffer文档的链接: https://github.com/dcodeIO/bytebuffer.js/wiki/API