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

时间:2012-01-31 15:14:25

标签: javascript internet-explorer browser compatibility binary-data

我们希望使用javascript来操作二进制数据。虽然可以使用ArrayBuffer完成,但旧版浏览器不支持ArrayBuffer,您会如何推荐这样做?

1 个答案:

答案 0 :(得分:2)

您可以选择将二进制数据存储在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...

这需要一些有点魔力,但你应该能够通过谷歌来解决这个问题。

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