我目前正在开展一个项目,该项目涉及替换数百个十六进制字符串,到目前为止我一直在手动完成此操作,但我们拥有的数据已经变得太大而无法持续进行。
我一直在寻找一种自动化过程的方法,但是我找到的所有解决方案都没有成功,大多数只提供一次一个字符串的方法解决方案,这并不比在十六进制编辑器中查找和替换更快。
下面是我正在尝试做的一个示例:
Orange to Tomato
1) 4f72616e6765 to 546f6d61746f
Mango to Melon
2) 4D616E676F to 4D656C6F6E
这一过程需要对大量数据重复进行,从橙子到西红柿、从芒果到甜瓜等等。
有人能给我指明正确的方向吗?
感谢您的时间。
答案1
您可以在 .json 文件中保存哪些旧字符串应该被哪些新字符串替换。例如:
{"Orange":"Tomato","Mango":"Melon", ...}
然后,编写一个 Python 程序(或您选择的程序),读取 .json 文件,并用十六进制字符串文件中的新字符串替换所有出现的旧字符串。在这里,您可以使用正则表达式。当然,您必须先将 .json 文件中的字符串转换为十六进制格式。我估计编写这样的程序大约需要半小时。
答案2
它可以作为 PowerShell 脚本,但编写它并不那么简单。
您需要创建一个包含十六进制字符串对的文件,包含搜索和替换,然后循环执行替换。
此代码片段将有助于完成为一个搜索/替换组合编写的任务:
[byte[]] $searchBytes = 0x0, 0x80, 0x0 ## example
[byte[]] $replaceBytes = 0x87, 0xCE, 0xEB ## example
[byte[]] $content = [System.Io.File]::ReadAllBytes( <filename> )
if( $content.Contains( $searchBytes ) )
{
$startIndex = $content.IndexOf( $searchBytes )
Write-Host "Found $searchBytes at $startIndex"
for( $i = 0; $i -lt $searchBytes.Length; $i++ )
{
$content[ $i + $startIndex ] = $replaceBytes[ $i ]
}
}
[System.Io.File]::WriteAllBytes( <filename>, $content )