我想串联一个十六进制值,并使用JavaScript字符串。
var hexValue = 0x89;
var png = "PNG";
字符串“PNG”相当于串联0x50
, 0x4E
和0x47
。
串联hexValue
和png
通过
var concatHex = String.fromCharCode(0x89) + String.fromCharCode(0x50)
+ String.fromCharCode(0x4E) + String.fromCharCode(0x47);
...给结果与5,因为第一个十六进制值需要一个控制字符的字节数:
C2 89 50 4E 47
我与我哪里有原始图像数据的工作hexValue
和png
,需要将它们连接起来,而不包括该控制字符。
- 有没有办法剪掉控制字符?
- 鉴于我已经字节数组,有没有更好的方式来连接它们,同时保留字节的字符串?
嗯,我正在调查,我发现,在JavaScript实现这一eficienly的JavaScript类型数组使用。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
http://msdn.microsoft.com/en-us/library/br212485(v=vs.94).aspx
在这里,我写了一个代码(未测试)来执行你想要什么:
var png = "PNG";
var hexValue = 0x89;
var lenInBytes = (png.Length + 1) * 8; //left an extra space to concat hexValue
var buffer = new ArrayBuffer(lenInBytes); //create chunk of memory whose bytes are all pre-initialized to 0
var int8View = new Int8Array(buffer); //treat this memory like int8
for(int i = 0; i < png.Length ; i++)
int8View[i] = png[i] //here convert the png[i] to bytes
//at this point we have the string png as array of bytes
int8View[png.Length] = hexValue //here the concatenation is performed
那么希望它帮助。