我想在二进制文件中替换一些文本。我把二进制文件转换成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
是的,我有一种感觉,大小可能是前进的方向。然而,我试图替换的实际标题字符串是不同的大小(对不起,我应该在我的例子中明确表示),所以我不确定这是可能的。 –