【发布时间】:2017-09-28 10:39:46
【问题描述】:
我想创建一个可以保存/下载的 hex 文件。
结果应该是一个十六进制格式的文件,像这样:
5350 4401 011a 000a 0900 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
00f8 ff1e ffff ffff b9ff c03b e6bf fbd8
bffb bccc 671c fdee eefd eefe ec6f 3800
0fc0 0003 c000 0180 0f00 1c00 003e 0003
c1e0 07ff f006 3e30 05dd d003 dde0 07be
f00f 6378 0edd b80e 1c38 0f1c 7877 9cf7
7bdd ef7d dddf 1edd bc0f 1c78 07c1 f003
dde0 01be c000 1c00 6f00 1013 4340 3055
6208 181b 4b48 385d 6a72 7678 7b7e 8087
898c 9098 0713 1444 4337 5766 0f1b 1c4c
4b3f 5f6e 7577 7a7d 7f86 888b 8e97 9f02
0610 1006 0205 0502 0610 1006 0205 0503
0204 0304 0503 0303 0202 8080 8080 8080
9090 8080 8080 8080 9090 8080 8080 8080
8080 8080 80
我已经尝试过这个解决方案:Javascript: how to convert hex data to binary and write it into a file 但似乎卡在某个地方。
我的代码
var bytes = new Array(122, 13, 14, 9, 255); // integer values
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];
}
save_file(ia,"hexfile.bin");
save_file(data, filename)
{
var file = new Blob([data], {type: "octet/stream"});
if (window.navigator.msSaveOrOpenBlob) // IE10+
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
}
保存文件有效,但内容不是我所期望的。 感谢您的帮助,谢谢!
【问题讨论】:
-
您实际得到的结果是什么?意识到没有像十六进制格式的文件这样的东西,这就是在十六进制编辑器中查看二进制文件的方式,除非您的意图是实际制作一个具有该格式每个字节的十六进制值的文本文件
标签: javascript file hex