如何将字符串中表示的十六进制代码转换为字节,反之亦然?
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与字节,因为它看起来像打印到控制台时的传入字符串),所以我很困惑......
我还发现了这两个原生的javascript函数,解码器在我的传入流上工作,但我仍然无法得到十六进制编码......
function encode_utf8( s ) {
return unescape( encodeURIComponent( s ) );
}
function decode_utf8( s ) {
return decodeURIComponent( escape( s ) );
}
答案 0 :(得分:27)
这是一个node.js特定方法,利用节点标准库提供的Buffer类。
https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
获取字节(0-255)值:
Buffer.from('80', 'hex')[0];
// outputs 128
转回来:
Buffer.from([128]).toString('hex');
// outputs '80'
要转换为utf8:
Buffer.from('80', 'hex').toString('utf8');
答案 1 :(得分:3)
您可以使用Number.prototype.toString和parseInt。
关键是利用radix
参数为您进行转化。
var bytestring = Number('0x' + hexstring).toString(10); // '128'
parseInt(bytestring, 2).toString(16); // '80'