我有一个名为data的数组,每个索引都有一个字节值的十六进制字符串,看起来像这样
var data = new Array("0A", "31", "55", "AA", "FF")
如果我在十六进制编辑器中检查文件,我应该看到该序列。因此,如果我想编写一个文件,以便从内存地址0x00000000开始的值是十六进制值的序列,那么我该如何处理呢?
目前我正在使用此代码创建可下载文件。
function download(filename, text) {
var file = document.createElement('a');
file.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
file.setAttribute('download', filename);
file.click();
}
答案 0 :(得分:1)
你有一些十六进制数字作为没有前缀的字符串,你想把它们作为字节写入文件。因为javascript中当前没有字节实现,所以你必须将每个字节转换为相应的字符,然后写入你的文件。
var data = new Array("0A", "31", "55", "AA", "FF"), file = "";
//turn hex string to number, then convert it to string and append to file
file += data.map(hex => String.fromCharCode(+("0x"+hex))).join("")
//byte file back to hex array
data = file.split("").map(ch => ("0"+ch.charCodeAt(0).toString(16).toUpperCase()).slice(-2))