如何在JavaScript中将Hex转换为ASCII?

如何从Hexstring转换为ASCIIstring在JavaScript中?

例如:

32343630它将是2460

 function hex2a(hexx) { var hex = hexx.toString();//force conversion var str = ''; for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); return str; } hex2a('32343630'); // returns '2460' 

为了完整起见,相反的function:

 function a2hex(str) { var arr = []; for (var i = 0, l = str.length; i < l; i ++) { var hex = Number(str.charCodeAt(i)).toString(16); arr.push(hex); } return arr.join(''); } a2hex('2460'); //returns 32343630 

你可以用这个..

 var asciiVal = "32343630".match(/.{1,2}/g).map(function(v){ return String.fromCharCode(parseInt(v, 16)); }).join(''); document.write(asciiVal); 

另一种方法(如果您使用Node.js):

 var input = '32343630'; var output = new Buffer(input, 'hex'); log(input + " -> " + output); // Result: 32343630 -> 2460 

我发现如果你必须处理02(STX)或03(ETX)这样的控制字符,上面的解决scheme将不起作用,10以下的任何东西都会被读作一个数字,并且抛弃所有的东西。 我遇到了这个问题,试图通过串行通信parsing。 所以,我第一次接收到的hexstring,并把它放在一个缓冲区对象,然后将hexstring转换为像这样的string数组

 buf = Buffer.from(data, 'hex'); l = Buffer.byteLength(buf,'hex'); for (i=0; i<l; i++){ char = buf.toString('hex', i, i+1); msgArray.push(char);