我有一个包含十六进制值的字符串,例如: “1BB3AE3E”。
现在我想将其转换为一个字符串(预期结果“≥Æ>”)正是该字节表示形式(如此写入文件,并使用十六进制查看器打开将显示“1BB3AE3E”)
这有点像 Ruby 的
['1BB3AE3E'].pack('H*')
我已经尝试创建 Buffer.toString、String.fromCharCode,但它没有像我预期的那样工作。我得到的结果是用
var input = "1BB3AE3E"
var buffer = new Buffer(input, "hex")
var result = buffer.toString("binary")
结果是一个包含“³®>”的文件,其十六进制为:1B C2 B3 C2 AE 3E。 那些C2 来自哪里?我怎样才能让它发挥作用?
我也试过
var hexes = this.match(/.{1,2}/g) || [];
var back = "";
for(j = 0; j< hexes.length; j++) {
back += String.fromCharCode(parseInt(hexes[j], 16));
}
但没有白费。效果如上。
最佳答案
要做好代码你应该是hexDecode和prototype以及fromCharCode和parseInt,你可以做例子:
String.prototype.hexDecode = function(){
var j;
var hexes = this.match(/.{1,4}/g) || [];
var back = "";
for(j = 0; j<hexes.length; j++) {
back += String.fromCharCode(parseInt(hexes[j], 16));
}
return back;
}
关于javascript - 没有编码的十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478373/