javascript - javascript跨浏览器二进制数据处理

标签 javascript internet-explorer browser compatibility binary-data

我们希望使用 javascript 来操作二进制数据。虽然这可以通过 ArrayBuffer 完成,但旧版浏览器不支持 ArrayBuffer,您建议如何执行此操作?

最佳答案

您有一个选择是将二进制数据存储在数组中,并编写函数以与 ArrayBuffers 和 UintXArrays 相同的方式进行访问。这也可能是 DataView 的垫片.

这应该不是一项太难的任务,并且仍然可以合理地执行。

一个例子:

function getInt8(byteOffset)
{
    return (byteArray[byteOffset] << 24) >> 24; // moves sign bit to bit 32
}

function getUint8(byteOffset)
{
    return byteArray[byteOffset];
}

function getUint16(byteOffset)
{
    return byteArray[byteOffset] | byteArray[byteOffset + 1] << 8;
}

function setUint8(byteOffset, value)
{
    byteArray[byteOffset] = value & 0xff; // make sure to mask values
}

// etc...

这需要一些按位魔术,但您应该能够通过一些 google 来解决。

还有很多关于 IE 如何处理二进制数据的内容(例如 this 关于 XMLHttpRequests 的扩展线程)。

关于javascript - javascript跨浏览器二进制数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081934/

相关文章:

javascript - 更改 "with"属性更改样式

reactjs - 如果用户的浏览器不受支持,我可以呈现警告消息吗?

css - 浏览器视口(viewport)在浏览器之间是不同的

javascript - Node.js:WAITING异步调用的响应

javascript - Angular 5中 "tick"是什么意思

javascript - 通过 Javascript 检查加载时的控件状态的最佳方法是什么

javascript - .Net windows 应用程序 WebBrowser/Google Maps API v3

jquery - jQuery $.browser 是否已弃用?

javascript - Fabricjs:当编辑使用 FlipX 反转的文本时,各个字符保持翻转状态;编辑不是很有用

javascript - tbody 中的嵌套无容器 foreach 对于 IE 失败