Кросс-браузерная обработка двоичных данных в javascript - PullRequest
2 голосов
/ 31 января 2012

Мы хотим использовать JavaScript для манипулирования двоичными данными. Хотя это можно сделать с помощью ArrayBuffer, ArrayBuffer не поддерживается в старых браузерах, как бы вы порекомендовали это сделать?

1 Ответ

2 голосов
/ 31 января 2012

Один из вариантов, который у вас есть, - хранить двоичные данные в массиве 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 обрабатывает двоичные данные (например, this обширная тема о XMLHttpRequests).

...