如何在javascript中从ArrayBuffer中获得短值
How to get Short value from ArrayBuffer in javascript?
我在java中有一个ByteBuffer,我从中写下前几个值,它们是:
[-112, -37, 96, -28, -16, -28, -64, -25, 112, -30, -112, -29, 48, -28, 48,
-30, -48, -28, 32, -27, 80, -31, -112, -29, 80, -31, -96, -28, -96, -28,
-112, -30, -96, -30, -16, -27, 16, -28, 48, -27, -64, -32, -112, -30, -32,
-29, etc ,...]
而类似mybuffer.getShort()
的代码返回值为-9328,-7072等…
根据Java API:
short java.nio.ByteBuffer.getShort()
读取短值的相对get方法。
读取缓冲区当前位置的下两个字节,组成根据当前字节顺序将它们转换成短值,然后将位置增加2。
返回:缓冲区当前位置
的短值。抛出:BufferUnderflowException -如果小于两个字节
到这里一切都很好,所以问题开始在这里,问题是,如果我想在javascript中实现相同的,那么如何做到这一点?
我在javascript中使用ArrayBuffer,但根据java API,他们做一些计算,这是非常混乱的。
下面是我的javascript代码:
var buf = new ArrayBuffer(res.length); // 2 bytes for each char
var bufView = new Uint16Array(buf); //buf is same as buffer in java ByteBuffer above.
for (var i = 0, strLen = res.length; i < strLen; i++) {
bufView[i] = res.charCodeAt(i);
}
只是需要同样的东西,并且非常失望没有提供答案:D
在Scala上玩了一会儿,然后跳到Java,最后得到了这个(当然这符合我的需要,Java的实现有不同的选择…)
const getShort = (a,b) => a << 8 | b << 0
如果你有Uint8Array([1,2,3,4,5,6])
const uiArr = new Uint8Array([1,2,3,4,5,6])
你想要得到第一个短值只需传递数组中的前两个值
const firstShort = getShort(uiArr[1], uiArr[0]) // in my case little endian
const secondShort = getShort(uiArr[3], uiArr[2])
相关文章:
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何计算与php中的CRC32函数兼容的arrayBuffer(javascript中的From FileReader)
- ArrayBuffer和Blob之间的区别是什么
- 数组和ArrayBuffer之间的区别是什么
- 从Ajax Arraybuffer响应类型创建HTML画布
- Javascript:使用XMLHttpRequest发送arrayBuffer
- 如何将arrayBuffer转换为mp3音频
- 比较:用缓冲区视图调整ArrayBuffer的大小(Uint8 vs Float64),我是不是遗漏了什么
- Mozilla ctypes,从c数组提供Arraybuffer
- javascript ArrayBuffer,what'it’这是干什么的
- ThreeJS从原始javascript ArrayBuffer加载Texuture
- Post Arraybuffer
- 错误:ArrayBuffer未定义
- 读取/写入/复制一个 ArrayBuffer 到另一个具有偏移量的 ArrayBuffer
- 为什么我在尝试使用 StageWebView 在 AIR Android 应用程序中实现 Google Maps Jav
- 使用 DataView 和 ArrayBuffer 转换 32BitPackedARGB 数组以解决 Endiness
- 如何在JavaScript ArrayBuffer上进行正则表达式替换
- Javascript - 从 ArrayBuffer 中获取数据
- 如何从 Node.js 中的$http请求返回 ArrayBuffer
- node-webkit 在 c++ 插件中创建 ArrayBuffer 时崩溃