我有一些十六进制数值,需要将它们转换为二进制数据后才能写入文件。
我把十六进制字符串转换成整数数组,然后将每个整数转换成字符:
// bytes contains the integers
str = String.fromCharCode.apply(String, bytes);
现在我创建了Blob文件并下载它:
var blob = new Blob([str], {type: "application/octet-stream"});
saveAs(blob, "file.bin");
但是出了一些问题:如果我打印
bytes
和str
的长度,我得到相同的值(512
),但文件包含了684个字符,这当然不是我所期望的结果。因此,我有: 512对十六进制值 -> 512个整数 -> 512个字符 -> 我保存文件 -> 文件中有684个字符。
我做错了什么?我甚至尝试将字符集添加到blob文件中,例如:
var blob = new Blob([str], {type: "application/octet-stream;charset=UTF-8,"});
但是一直没有成功。
编辑:
原始十六进制:
已保存的文件: