我正在尝试借助文件 API 读取本地文本文件,并使用与“bin2hex()”类似的函数(使用 CharCodeAt() 函数)将其转换为 HEX 文件,然后最终处理十六进制数字来获取我的结果。所有这些都用 JavaScript 编写。
为了将文件转换为十六进制数组,我通过 for 循环文件扫描文件的每个字符,然后使用 bin2hex() 函数获取十六进制值。我期望结果在 0x00 和 0xFF 之间,对应于我尝试转换的任何字符。但似乎有时我会无缘无故地获得 0xfffd 或 0x00 。通过 charcodeat() 函数处理或使用文件 API 读取的字符是否有限制?或者是否有更简单的方法(PHP、Ajax)?
非常感谢,
杰罗姆
最佳答案
直接进入字节而不是通过字符串
var file = new Blob(['hello world']); // your file
var fr = new FileReader();
fr.addEventListener('load', function () {
var u = new Uint8Array(this.result),
a = new Array(u.length),
i = u.length;
while (i--) // map to hex
a[i] = (u[i] < 16 ? '0' : '') + u[i].toString(16);
u = null; // free memory
console.log(a); // work with this
});
fr.readAsArrayBuffer(file);
关于javascript - 文件 API - 十六进制转换 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23144647/