Javascript 如何获取数据视图类型的大小(例如Uint32=4,Float64=8)以推进偏移?

Javascript 如何获取数据视图类型的大小(例如Uint32=4,Float64=8)以推进偏移?,javascript,dataview,typed-arrays,Javascript,Dataview,Typed Arrays,我正在用解析一个序列化对象,并希望能够根据数据大小增加一个偏移量变量。我不想为简单的事情重新定义变量,比如BYTES\u PER\u UINT16 ... var dv = new DataView(payload); var offset = 0; anObject.field1 = dv.getUint8(offset); offset += BYTES_PER_UINT8; anObject.field2 = dv.getUint32(offset, true); offset += BY

我正在用解析一个序列化对象,并希望能够根据数据大小增加一个偏移量变量。我不想为简单的事情重新定义变量,比如
BYTES\u PER\u UINT16

...
var dv = new DataView(payload);
var offset = 0;
anObject.field1 = dv.getUint8(offset);
offset += BYTES_PER_UINT8;
anObject.field2 = dv.getUint32(offset, true);
offset += BYTES_PER_UINT32;
...

您需要将它们包装在一个对象中,该对象可以为您执行此操作

例如:

function DataViewExt(o) {
    this.view = new DataView(o);
    this.pos = 0;
}

DataViewExt.prototype = {
    getUint8: function() {
        return this.view.getUint8(this.pos++);
    },

    getUint16: function() {
        var v = this.view.getUint16(this.pos);
        this.pos += 2;
        return v
    },
    // etc...
};
现在,您可以创建一个实例:

var dv = new DataViewExt(payload);
var uint8 = dv.getUint8();       // advances 1 byte
var uint16 = dv.getUint16();     // advances 2 bytes
...
console.log("Current position:", dv.pos);
修改以适应您的场景