python文本到十六进制和搜索十六进制数据或将所有内容转换为二进制

时间:2014-01-16 21:23:16

标签: python struct hex pack data-conversion

决定彻底重拍这个问题。 Hexedit的默认设置在中心窗口中显示十六进制,在右侧窗口中显示ansi文本。以下是当前代码:

patlst = [line.strip() for line in open(patch,'rb',1)] #Read Patch start
if alphex == 'h' :
    old = patlst[patlst.index('OLD:')+1] #get old data str
    new = patlst[patlst.index('NEW:')+1] #get new data str
    old = old.lower();old = ''.join(old.split())
    new = new.lower();new = ''.join(new.split())
pircwd = os.chdir('..'); pircwd = os.getcwd() ##DIR change
with open(tar, 'rb') as f:
    data = binascii.hexlify(f.read(160))
with open(tar+'BAK', 'wb') as f:
    f.write(data.replace(b'old',b'new'))

原始的hexedit视图未经更改: This is the original hexedit

期望的结果:

This is the desired result

实际结果:

enter image description here

我认为这需要打包和解包功能才能正常工作?或者有更好的方法来做到这一点吗?

3 个答案:

答案 0 :(得分:1)

要从(ASCII编码)十六进制转换为二进制,您可以使用binascii.unhexlify()

答案 1 :(得分:0)

确定丢失了我的所有登录信息。注册的电子邮件帐户已经死了。 Parks Banyon是加里华盛顿的秘密身份。我将在另一个上下文中重新发布这个问题,标题为“python打印数据以python格式看到stout。IE raw。

答案 2 :(得分:0)

基本上这个特殊的问题是关注3个问题,希望是一个解决方案。显然事实并非如此。因此,我将以下stackoverflow问题作为部分答案(为什么Python在默认编码为ASCII时打印unicode字符?)并将Dan Getz的回复投票为可行的解决方案。我将这些问题作为3个问题重新发布,并希望答案不会发生冲突。