从网络服务器我收到一个由 N 个整数(有符号 16 位,小端序)组成的大字节数组,我想在 javascript 中构建一个整数数组。
当然,我可以遍历传入的数组并按每两个字节推入。这样做没有问题。
我想知道是否有更方便的方法来填充数组。例如,在 C 语言中,我可以设置一个指向第一个字节的整数指针,然后访问所有其他字节。或者更好的是,我可以将缓冲区 malloc 和 memcpy 到保留空间。在这两种情况下,我都不必迭代源数组。
从网络服务器我收到一个由 N 个整数(有符号 16 位,小端序)组成的大字节数组,我想在 javascript 中构建一个整数数组。
当然,我可以遍历传入的数组并按每两个字节推入。这样做没有问题。
我想知道是否有更方便的方法来填充数组。例如,在 C 语言中,我可以设置一个指向第一个字节的整数指针,然后访问所有其他字节。或者更好的是,我可以将缓冲区 malloc 和 memcpy 到保留空间。在这两种情况下,我都不必迭代源数组。
这会将两个字节(每个 8 位)转换为整数
function Two8bitBytestoOneInteger(byteHighBits,byteLowBits){
return ( byteHighBits.charCodeAt(0) << 8 ) | ( byteLowBits.charCodeAt(0) & 0xFF ) ;
}
提示:
如果您尝试打印字节(即console.log(byteHighBits)
),您会收到一个错误NaN
(不是数字),因此要查看字节整数值,请执行此操作( console.log(byteHighBits.charCodeAt(0) )
希望这可以帮助!
在支持 Typed Arrays 的较新浏览器中,您可以发出 XHR 请求,并将responseType
请求参数设置为"arraybuffer"
. 然后响应将是一个ArrayBuffer
对象,您可以将其传递给Int32Array
构造函数。