Ответ 1
Используя типизированные массивы, вы можете хранить массивы эти типы:
- INT8
- Uint8
- Int16
- UInt16
- Int32
- UInt32
- float32
- Float64
Например:
var array = new Uint8Array(100);
array[42] = 10;
alert(array[42]);
Смотрите в действии здесь.
Я собираюсь хранить большой массив байтовых значений (скорее всего, более миллиона) в Javascript. Если я использую обычный массив с нормальными номерами, это займет 8 МБ, потому что числа хранятся как удваиваются IEEE, но если я могу сохранить его в виде байтов, он будет всего лишь 1 МБ.
Я хотел бы избежать тратить столько места по понятным причинам. Есть ли способ хранить байты как байты вместо удвоений? Совместимость с браузером не является проблемой для меня, если она работает в Chrome. Это в HTML5, если это имеет значение.
Используя типизированные массивы, вы можете хранить массивы эти типы:
Например:
var array = new Uint8Array(100);
array[42] = 10;
alert(array[42]);
Смотрите в действии здесь.
var array = new Uint8Array(100);
array[10] = 256;
array[10] === 0 // true
Я проверил в firefox и chrome, это действительно массив байтов:
var array = new Uint8Array(1024*1024*50); // allocates 50MBytes
Вы можете хранить данные в массиве строк некоторого большого фиксированного размера. Это должно быть эффективным для доступа к любому конкретному символу в этом массиве строк и для обработки этого символа в виде байта.
Было бы интересно увидеть операции, которые вы хотите поддержать, возможно, выраженные как интерфейс, чтобы сделать вопрос более конкретным.