我有一堆十六进制值,我必须在将它们写入文件之前将其转换为二进制数据。
我在一个整数数组中转换了十六进制字符串,然后我将每个整数转换为一个char:
// bytes contains the integers
str = String.fromCharCode.apply(String, bytes);
现在我创建blob文件并下载它:
var blob = new Blob([str], {type: "application/octet-stream"});
saveAs(blob, "file.bin");
但出了点问题:如果我打印length
的{{1}}和bytes
的长度我有相同的值(str
),但该文件包含684 chars,当然不是我的预期。
所以我有:
512 对十六进制值 - > 512 整数 - > 512 字符 - > 我保存文件 - > 684 文件内的字符。
我做错了什么?我甚至尝试将字符集添加到blob文件中,即:
512
但没有成功。
修改
原版HEX:
已保存的文件:
答案 0 :(得分:5)
感谢 Andrey ,我找到了解决方案:
我必须以二进制模式编写,所以:
(\xs -> length xs > 15)