rva*_*oni 4 javascript binary hex blob
我有一堆十六进制值,我必须先将其转换为二进制数据,然后再将它们写入文件.
我在一个整数数组中转换了十六进制字符串,然后我将每个整数转换为一个char:
// bytes contains the integers
str = String.fromCharCode.apply(String, bytes);
Run Code Online (Sandbox Code Playgroud)
现在我创建blob文件并下载它:
var blob = new Blob([str], {type: "application/octet-stream"});
saveAs(blob, "file.bin");
Run Code Online (Sandbox Code Playgroud)
但是出了点问题:如果我打印length出来bytes并且str我的长度有相同的值(512),但该文件包含684个字符,当然这不是我所期望的.
所以我有:
512对十六进制值 - > 512个整数 - > 512个字符 - >我保存文件 - > 684个字符在文件中.
我究竟做错了什么?我甚至尝试将字符集添加到blob文件中,即:
var blob = new Blob([str], {type: "application/octet-stream;charset=UTF-8,"});
Run Code Online (Sandbox Code Playgroud)
但没有成功.
编辑:
原始HEX:
保存的文件:
感谢Andrey我找到了解决方案:
我必须以二进制模式编写,所以:
var ab = new ArrayBuffer(bytes.length); //bytes is the array with the integer
var ia = new Uint8Array(ab);
for (var i = 0; i < bytes.length; i++) {
ia[i] = bytes[i];
}
var blob = new Blob([ia], {type: "application/octet-stream"});
saveAs(blob, id + "_<?php echo $report['md5']; ?>.bin");
Run Code Online (Sandbox Code Playgroud)