sha*_*un5 13 javascript node.js
如何将字符串中表示的十六进制代码转换为字节,并将其反转为Javascript?
var conv = require('binstring');
var hexstring ='80';
var bytestring = conv(hexstring, {in:'hex', out:'utf8'});
var backtohexstring = conv(bytestring, {in:'utf8', out:'hex'}); // != '80'???
Run Code Online (Sandbox Code Playgroud)
backtohexstring将传入的数据字符串解码为正确的十六进制(我也使用了utf8与字节,因为它看起来像打印到控制台时的传入字符串),所以我很困惑......
我还发现了这两个原生的javascript函数,解码器在我的传入流上工作,但我仍然无法得到十六进制编码...
function encode_utf8( s ) {
return unescape( encodeURIComponent( s ) );
}
function decode_utf8( s ) {
return decodeURIComponent( escape( s ) );
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*ber 28
这是node.js特定的方法,利用节点标准库提供的Buffer类.
https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
要获取字节(0-255)值:
Buffer.from('80', 'hex')[0];
// outputs 128
Run Code Online (Sandbox Code Playgroud)
并转换回来:
Buffer.from([128]).toString('hex');
// outputs '80'
Run Code Online (Sandbox Code Playgroud)
要转换为utf8:
Buffer.from('80', 'hex').toString('utf8');
Run Code Online (Sandbox Code Playgroud)
您可以使用Number.prototype.toString和parseInt。
关键是利用radix参数为你做转换。
var bytestring = Number('0x' + hexstring).toString(10); // '128'
parseInt(bytestring, 2).toString(16); // '80'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43876 次 |
| 最近记录: |