How to convert a hex string to a byte and a byte to a hex string in Javascript?
如何将字符串中表示的十六进制代码转换为字节,并在JavaScript中进行相反的转换?
1 2 3 4 | var conv = require('binstring'); var hexstring ='80'; var bytestring = conv(hexstring, {in:'hex', out:'utf8'}); var backtohexstring = conv(bytestring, {in:'utf8', out:'hex'}); // != '80'??? |
backtohexstring将传入的数据字符串解码为正确的十六进制(我还使用了utf8与byte,因为它在打印到控制台时"看起来"像传入的字符串),所以我很困惑…
我还发现了这两个本机的javascript函数,解码器在我的输入流上工作,但我仍然无法得到十六进制编码…
1 2 3 4 5 6 | function encode_utf8( s ) { return unescape( encodeURIComponent( s ) ); } function decode_utf8( s ) { return decodeURIComponent( escape( s ) ); } |
号
这里有一个node.js特定的方法,利用了node标准lib提供的缓冲区类。
https://nodejs.org/api/buffer.html buffer buffers和character编码
要获取字节(0-255)值:
1 2 | Buffer.from('80', 'hex')[0]; // outputs 128 |
号
转换回:
1 2 | Buffer.from([128]).toString('hex'); // outputs '80' |
要转换为utf8:
1 | Buffer.from('80', 'hex').toString('utf8'); |
。
您可以使用number.prototype.toString和parseInt。
关键是利用
1 2 | var bytestring = Number('0x' + hexstring).toString(10); // '128' parseInt(bytestring, 2).toString(16); // '80' |