我有一个简短的JavaScript函数,它可以获取上传的文件并显示其十六进制等效值。将原始文件和十六进制编辑器中的输出进行比较,可以发现它们部分不同但并非完全相同。
什么导致输出结果的差异?非常感谢您的帮助。
String.prototype.hexEncode = function(){
var hex, i;
var result = "";
for (i = 0; i < this.length; i++) {
hex = this.charCodeAt(i).toString(16);
result += ("" + hex).slice(-4);
}
return result
}
function upload() {
var file = document.getElementById("fileToUpload").files[0];
var reader = new FileReader();
reader.readAsText(file, "windows-1252");
reader.onload = function (evt) {
var program = evt.target.result.hexEncode();
program = program;
console.log(program);
}
}
以下是原始文件和输出结果并排显示:
2A 2A 54 49 38 33 46 2A 1A 0A 0A 43 72 65 61 74
2A 2A 54 49 38 33 46 2A 1A AA 43 72 65 61 74 65
什么导致输出结果的差异?非常感谢您的帮助。
.readAsArrayBuffer
而不是.readAsText
吗?后者可能会改变内容。 - Derek 朕會功夫