我们希望使用javascript处理二进制数据。尽管可以使用ArrayBuffer做到这一点,但旧版浏览器不支持ArrayBuffer,您如何建议这样做?
最佳答案
您拥有的一种选择是将二进制数据存储在Array中,并编写函数以与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如何处理二进制数据的内容也很多(例如,关于XMLHttpRequests的this广泛线程)。