gpt4 book ai didi

javascript - 将 DataView 与 Node.js 缓冲区一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:16 25 4
gpt4 key购买 nike

我正在尝试使用 DataView 读取/写入一些二进制数据目的。当缓冲区从 UInt8Array 初始化时,它似乎可以正常工作,但是如果向其传递一个 NodeJS Buffer 对象,结果似乎会关闭。我是否错误地使用了 API?


import { expect } from 'chai';

describe('read binary data', () => {

it('test buffer', () => {
let arr = Buffer.from([0x55,0xaa,0x55,0xaa,0x60,0x00,0x00,0x00,0xd4,0x03,0x00,0x00,0x1c,0xd0,0xbb,0xd3,0x00,0x00,0x00,0x00])
let read = new DataView(arr.buffer).getUint32(0, false);
expect(read).to.eq(0x55aa55aa);
})

it('test uint8array', () => {
let arr = new Uint8Array([0x55,0xaa,0x55,0xaa,0x60,0x00,0x00,0x00,0xd4,0x03,0x00,0x00,0x1c,0xd0,0xbb,0xd3,0x00,0x00,0x00,0x00])
let read = new DataView(arr.buffer).getUint32(0, false);
expect(read).to.eq(0x55aa55aa);
})

})

带有缓冲区的失败,并显示

AssertionError: expected 1768779887 to equal 1437226410
+ expected - actual

-1768779887
+1437226410

最佳答案

尝试使用这个buf.copy

const buf = fs.readFileSync(`...`);
const uint8arr = new Uint8Array(buf.byteLength);

buf.copy(uint8arr, 0, 0, buf.byteLength);
const v = new DataView(uint8arr.buffer);

关于javascript - 将 DataView 与 Node.js 缓冲区一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57429401/

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