如何在little endian中打印十六进制数,填充零,在python中没有'0x'?

Ian*_*004 2 python format hex

我想写一个循环,以4B十六进制数字格式打印1到50000.但是,我需要十六进制数字采用小端格式,显示全部为零的零,并且在开头不显示"0x".

例:

数字50,000是十六进制的0xc350.

我要打印:50C30000

这是我到目前为止,我只是不知道如何添加零以使其为4B格式:

import struct
print hex( struct.unpack( '<H', struct.pack('>H', 50000) ) [0] ) [2:].upper()
#Output is 50C3
Run Code Online (Sandbox Code Playgroud)

〜谢谢

aba*_*ert 5

让我们假设你已经有了转换为little-endian工作的部分.您要问的部分是如何将数字格式化为特定字符串.

这正是format函数的用途:

>>> h = 20675
>>> format(h, '04X')
50C3
Run Code Online (Sandbox Code Playgroud)

完整的详细信息在格式规范迷你语言中,但简要说明:

  • 'X'是一个类型字段,意思是"十六进制格式.输出基数为16的数字,使用大写字母表示9以上的数字."
  • '4'是一个宽度字段,这意味着任何短于4个字符的内容都将被填充.
  • '0' 显然是一个没有名称的特殊情况,但是"将宽度字段加上零('0')字符可以为数字类型启用符号识别的零填充.这相当于填充字符'0'对齐类型为'='."

但是让我们重新审视第一句话.你没有正确的字节交换,因为你需要一个32位的小端数字,而你正在创建一个16位的数字.这'H'意味着什么.如果你想要32位,你必须使用'I'.

然后,当然,您需要将宽度更改48.