我想在二進制文件中替換一些文本。我把二進制文件轉換成js中的一個字節數組,然後嘗試使用我想改變的字節序列。但是,它似乎字節數組不是一個字符串,所以我不能替換序列。我試過toString(),它只是給我大量的轉義(例如65 /,34 /,102 /等)我也試過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
是的,我有一種感覺,大小可能是前進的方向。然而,我試圖替換的實際標題字符串是不同的大小(對不起,我應該在我的例子中明確表示),所以我不確定這是可能的。 –