【问题标题】:Python, how Read File hex and Shift ItPython,如何读取文件十六进制并移动它
【发布时间】:2015-12-24 09:49:49
【问题描述】:

在提交新问题之前,我对此进行了搜索,但未能找到好的答案,我想读取具有任何类型扩展名的文件的一些字节,我想读取十六进制并将其向左或向右移动然后覆盖它。我可以用这段代码读取 4 个字节:

FILE = open(dst,"r+b")
FILE.seek(1,0)
byte = FILE.read(4)
my_hex = binascii.hexlify(byte)

结果:

sample my hex: af5f3fee

现在我需要转换它,但我必须将它转换为 int 然后转换它,例如:

shift = (int(my_hex,16)<<1)

好的,现在我有一个小数移位,但现在我需要将其转换为十六进制,当我通过 hex() 将其转换为十六进制时,我有 2 个问题: 1.我怎样才能删除第一个它的0x? 2. 当我转换它时,我看到这个小数点末尾的字符“L”例如:

shift= (int("af5f3fee",16)<<1)
print hex(shift)

结果: 班次前 = af5f3fee 移位后 = 0x15ebe7fdcL 为什么 ?

我可以用简单的方法或方法在 python 中向左或向右移动十六进制吗?

【问题讨论】:

  • 你不能简单地乘以 2 吗?
  • 结果0x15ebe7fdcL是对的!使用print hex(shift)[2:-1] 仅打印字节十六进制
  • 感谢 Max ,在您的帮助下解决

标签: python hex decimal


【解决方案1】:

使用format(shift,'x') 代替hex(shift)

print format(int("af5f3fee",16)*2,'x')

结果为@​​987654324@

【讨论】:

  • 完美!!!!!!!!!!谢谢它的工作。例如,如果我想用 len 400 字符移动一个十六进制,解决方法是什么?
  • 您可以将其拆分为最大大小的子字符串,您可以一次将其转换为整数。然后转移它们。但是你需要处理溢出。如果生成的字符串以 '1...' 开头,则必须将其切断并将其添加到下一个。
猜你喜欢
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2020-08-16
相关资源
最近更新 更多