我需要将一个四位数的字符串拆分为两个十六进制数字。

例如:string =“ ABCD”
预期输出= 0xAB 0xCD

我尝试了以下语句:

>>data = "0000"
>>[byte1, byte2] = [data[:2], data[2:]]
>>byteInt = int(byte1,16)
>>byteHex = format(byteInt,'0#4x')
>>print byteHex


我在“ byteHex = format(byteInt,'0#4x')”行收到错误“ ValueError:无效的转换规范”

最佳答案

由于您未指定任何对齐方式,因此不需要格式说明中的前导零:


  format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]


fill以对齐方式为条件:

>>> byteHex = format(byteInt,'#4x')
>>> byteHex
' 0x0'


要在格式规范中使用可选的fill,应指定对齐方式:

>>> byteHex = format(byteInt,'0>#4x') # left align
>>> byteHex
'0x00'

08-28 15:57