unsigned int buffer to javascript中的字符串转换

时间:2015-01-22 05:32:55

标签: javascript

我想将无符号整数数组(范围从0到255)转换为字符串,这样每个unsigned int只占用一个字节,即每个uint转换为等效的字符符号,占用一个字节。 代码:

data = con.getImageData(0,0,mycanvas.width,mycanvas.height).data;

var imageDataString = '';
for(var i =4; i< data.length; i += 4)
{
    imageDataString+=String.fromCharCode(data[i])+ String.fromCharCode(data[i+1]) +String.fromCharCode(data[i+2]);
}

在上面的代码中,保证每个转换后的uint只占用一个字节吗?

1 个答案:

答案 0 :(得分:1)

没有

Javascript没有定义byte类型,并且实现可以选择string中使用的字符的大小。

ECMAScript 6(目前是草案,但主要由大多数浏览器实现)确实提供了具有不同元素大小的“类型化数组”,包括Uint8Array(和Uint8ClampedArray),它涵盖了这种使用场景。

请注意,从.data返回的ImageData对象的getImageData属性已经一个Uint8ClampedArray(请参阅此处:https://developer.mozilla.org/en-US/docs/Web/API/ImageData })

  

是一个Uint8ClampedArray,表示包含RGBA顺序数据的一维数组,整数值介于0到255之间(包括在内)。

所以你的工作完全没必要,因为data已经由8位元素组成。将数据转换为字符串只会使其使用至少两倍的数据(通常,字符为16位宽)。