我们希望使用 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/