【问题标题】:python unhexlify not working as expectedpython unhexlify 没有按预期工作
【发布时间】:2014-02-26 15:25:01
【问题描述】:

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

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)

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

【问题讨论】:

  • binascii.unhexlify(data) is missing assignment。您似乎只写出了hexlified数据。

标签: python hex converter binary-data hex-editors


【解决方案1】:

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

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

binascii.unhexlify(data)

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

fo.write(binascii.unhexlify(data))

或首先将其分配回data

【讨论】:

  • 我选择了 fo.write(binascii.unhexlify(data)) 选项。谢谢一百万。
猜你喜欢
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多