我们希望使用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广泛线程)。

10-04 16:55