バイナリファイル内のテキストの一部を置き換えようとしています。バイナリファイルをjsのバイト配列に変換し、変更したいバイトシーケンスを使用しようとします。しかし、バイト配列は文字列ではないようですので、シーケンスを置き換えることはできません。私はtoString()を試してみましたが、私はjoin()関数を試してきましたが、それはバイト配列にスペースを入れるようです。配列を保持していません(後でbase64を使ってエンコードすると大きな違いになります)。Javascriptバイト配列の置き換え
私は配列をループして個々にバイトを変更することができますが、指定したシーケンス内でどのようにすることができますか?配列を検索して置換することは可能ですか?
function read(){
var binaryfile = readbytes('C:/binaryfile.txt');
var replaced = binaryfile.join(" ");
//replaced = binaryfile.toString();
var Header1 = "67 99 110 75 0 0 0 0 70 66 67 ";
var Header2 = "67 99 110 75 0 0 0 0 80 70 67 45 0";
finalstring = replaced.replace(Header1, Header2);
alert(replaced);
}
function readbytes(s){
var f = new File(s);
var i,a,c;
var d = [];
if (f.isopen) {
c = f.eof;
for(i=0;i<c ;i++){
a = f.readbytes(1);
d.push(a);
}
return d;
f.close();
} else {
post("could not open file: " + s + "n");
}
}
あなたがバイトとして配列で検索しているバイトシーケンス(すなわち、ヘッダ1)を入れてください。バイナリファイルでは、検索配列に同じ長さの 'Array.prototype.slice(index、index + searcharray.length)'を使ってスライスを作成します。インデックス0の 'Array.prototype.every()'とbinarfile.length-searcharray.lengthの両方をインデックスの1ずつ増加させて比較を開始する。 – Redu
はい、私は大きさが前進するかもしれないと感じました。しかし、私の実際のヘッダ文字列は、置き換えようとしていますが、私の例ではこれを明確にしておきたいのですが残念ですが、これは可能なのか分かりません。 –