【问题标题】:Converting ArrayBuffer to int in Javascript在 Javascript 中将 ArrayBuffer 转换为 int
【发布时间】:2015-09-22 01:11:52
【问题描述】:

我正在尝试使用 JavaScript 将 ArrayBuffer 转换为 int。我的应用程序使用 WebSocket,在 Sender 端我有一个介于 0 和 4 之间的整数。我在 C# 中转换了这个 ArraySegment。我通过 Web 套接字将其发送到我的 JavaScript 客户端,该客户端将其作为 ArrayBuffer 接收。

ArrayBuffer 现在保存的值为 0 或 1 或 2 或 3。我如何“读取”该值?

【问题讨论】:

标签: javascript arraybuffer


【解决方案1】:
var i = new Uint8Array(buf)[0];

那么i 就是你所需要的。如果需要subarray():

ArrayBuffer.prototype.subarray = function (a, b) {
    var u = new Uint8Array(this);
    return new Uint8Array(u.subarray(a, b)).buffer;;
};

var i = new Uint8Array(buf.subarray(0,1))[0];

【讨论】:

    【解决方案2】:

    使用DataView:

    var buffer = new ArrayBuffer(16);
    var dv = new DataView(buffer, 0);
    
    dv.setInt16(1, 42);
    dv.getInt16(1); //42
    

    【讨论】:

    • 这个基数是零还是从 1 开始,就像您在示例中那样?
    • 我用这个:var dv = new DataView(e.Data);变量索引 = dv.getInt16(1);但我得到的只是零?我知道(为了测试我通过了'3')?
    • 在 DataView 构造函数中相对于 ArrayBuffer 偏移,在 setInt16getInt16 中相对于 DataView。
    • 是的,这就是我尝试过的。所以,我的 ArrayBuffer 是 1000 字节长度。我只想将第一个字节读取为整数? (在我的代码中说过 myArray[0]=(byte)3 你看
    • 好的,试试getInt8(0) 代替getInt16(0)?
    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多