【发布时间】:2016-07-28 11:08:30
【问题描述】:
我有一个包含十六进制值的字符串,例如: “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));
}
但没有白费。效果如上。
【问题讨论】:
-
我已经设法通过创建流
wstream = fs.createWriteStream("file.txt"); wstream.write(buff); wstream.end()来实现我想要的,但这是异步操作,需要我将缓冲区存储到文件中并再次从那里读取。看起来有点矫枉过正。
标签: javascript node.js string