python unhexlify 未按预期工作

标签 python hex converters binary-data hex-editors

每当程序打开文件时,它都会将该文件视为二进制数据。它将其转换为更高级的解释语言,即八进制、十六进制、ascii 等。在这种情况下,它在左侧 Pane 中显示十六进制,在右侧 Pane 中显示 ansi(Windows 7,因此应该是 CP1252)。下面的三张图片展示了原始 View ,然后是所需的更改,第三张是代码所做的实际更改:

enter image description here

enter image description here

enter image description here

with open(tar,'rb') as f:
data = binascii.hexlify(f.read(160))
if old in data:
    print 'found!'
    data = data.replace(old, new)
else:
    print 'not found'
with open(tar+'new', 'wb') as fo:
    binascii.unhexlify(data)
    fo.write(data)

我显然没有正确定位写入传递方法。

最佳答案

提示:这两行有什么区别:

data = binascii.hexlify(f.read(160))

binascii.unhexlify(data)

在Python中,字符串对象是不可变的。您无法调用 data 来导致 data 命名的字符串发生更改,因为字符串不会更改。 binascii.unhexlify 相反返回一个new 字符串 - 这就是为什么第一个语句甚至首先起作用。如果您想.write生成的新字符串,那么您应该指定在代码中发生的事情 - 直接:

fo.write(binascii.unhexlify(data))

或者首先将其分配回data

关于python unhexlify 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21522332/

相关文章:

python - 按时进行沙箱 shell 程序

java -\x 在 Java 中转义?

递归中的 Java decToHex - 错误的输出顺序

ios - long long Number div 错误

python - 从 Pandas 数据框中删除值只出现一次的行

python - 如何打印一个文件中不包含另一个文件中任何字符串的行

java - 使用 fr.opensagres.xdocreport : variables remain empty 将 odt 文档转换为 pdf

c# - 音频转换 C#

python - 如何使用re搜索负数?

javascript - 十六进制的字符表示