如何在Javascript中存储字节数组

Ken*_*rey 48 javascript arrays html5 byte bytearray

我将在Javascript中存储大量字节值(最有可能超过一百万).如果我使用普通数字的正常数组,那将需要8 MB,因为数字存储为IEEE双精度数,但如果我可以将其存储为字节数,则它将只有1 MB.

我想避免因为显而易见的原因而浪费那么多空间.有没有办法将字节存储为字节而不是双精度?浏览器兼容性对我来说不是问题,只要它适用于Chrome.这是在HTML5中,如果这有所不同.

Ken*_*rey 57

通过使用类型化数组,您可以存储以下类型的数组:

  • INT8
  • UINT8
  • INT16
  • UINT16
  • INT32
  • UINT32
  • FLOAT32
  • Float64

例如:

?var array = new Uint8Array(100);
array[42] = 10;
alert(array[42]);?
Run Code Online (Sandbox Code Playgroud)

这里看到它.

  • 是! 这缩短了产生800,000+元素阵列的时间,从2.4秒到0.12秒.使用`Float32Array`会产生惊人的差异! (5认同)

reu*_*uns 10

var array = new Uint8Array(100);    
array[10] = 256;
array[10] === 0 // true
Run Code Online (Sandbox Code Playgroud)

我在firefox和chrome中验证过,它实际上是一个字节数组:

var array = new Uint8Array(1024*1024*50);  // allocates 50MBytes
Run Code Online (Sandbox Code Playgroud)

  • 由于数组是uint8的数组,因此256溢出一个字节并使该值等于0 (23认同)