串联十六进制字节和字符串在JavaScript中,同时保留字节(Concatenating hex

2019-10-19 07:57发布

我想串联一个十六进制值,并使用JavaScript字符串。

var hexValue = 0x89;
var png = "PNG";

字符串“PNG”相当于串联0x500x4E0x47

串联hexValuepng通过

var concatHex = String.fromCharCode(0x89) + String.fromCharCode(0x50) 
              + String.fromCharCode(0x4E) + String.fromCharCode(0x47);

...给结果与5,因为第一个十六进制值需要一个控制字符的字节数:

C2 89 50 4E 47

我与我哪里有原始图像数据的工作hexValuepng ,需要将它们连接起来,而不包括该控制字符。

  1. 有没有办法剪掉控制字符?
  2. 鉴于我已经字节数组,有没有更好的方式来连接它们,同时保留字节的字符串?

Answer 1:

嗯,我正在调查,我发现,在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

那么希望它帮助。



文章来源: Concatenating hex bytes and strings in JavaScript while preserving bytes