J'ai une courte fonction JavaScript qui prendra un fichier téléchargé et affichera l'équivalent hexadécimal. Comparer le fichier original et la sortie dans un éditeur hexadécimal montre qu'ils sont partiellement différents mais pas complètement.Javascript FileReader lit le fichier incorrectement
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);
}
}
Voici le fichier d'origine et la sortie à côté de l'autre:
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
Quelle est la cause de la différence dans les résultats? Toute aide serait grandement appréciée.
au lieu de '.readAsText' qui pourrait modifier le contenu, avez-vous essayé [' .readAsArrayBuffer'] (https: //developer.mozilla .org/fr-fr/docs/Web/API/FileReader/readAsArrayBuffer) à la place? –
N'essayez certainement pas de générer un vidage hexadécimal à partir du résultat readAsText. De plus avec un codage non par défaut. readAsArrayBuffer est ce que vous voulez. – Kaiido
Quel est le résultat attendu? – guest271314