如何使用python将十六进制0x38扩展为00 00 00 38



输出

我指的是日志文件中的一个索引位置,它有一个十进制值,我需要使用将其转换为十六进制

-->CCD_ 1输出例如:;0x38";

有没有办法将其输出为00 00 00 38而不是0x38?

我必须将输出与下一行的输出进行比较(看起来很像00 00 00 38(,并检查它们是否相同。

或者,我会通过这个在日志文件的下一行提取信息

-->b = line[148:159]

其将输出例如:00 00 00 38。如果我不能做前者,我能把它缩小为0x38吗?

对不起,我是新手,希望我能说清楚。请告知。谢谢

A"字节";对象有一个hex方法,该方法有一个可选的分隔符参数。因此,只需将0x38转换为4字节长的字节(big-endian(,并调用hex:

In [18]: 0x38 .to_bytes(4, "big").hex(" ")
Out[18]: '00 00 00 38'

(注意文本0x38.to_bytes之间的空格:这是能够对数字文本调用方法的必要语法技巧。如果值在变量中,像往常一样,显然不需要空格(

您是否试图将其作为带填充的十六进制?在这种情况下,您可以使用

a = hex(int(line[100:103])- 24)[2:].zfill(8)
a = ' '.join([a[i:i+2] for i in range(0, len(a), 2)])

这就变成了";0x38";变成";00 00 00 38";作为字符串

编辑:要执行与您要求相反的操作,您可以执行此

b = ''.join(line[148:159].split())
b = hex(int(b, 16))

这就变成了";00 00 00 38";进入优选的";0x38";(这可能会让你比前者更容易使用加法和减法,因为你可以转换成一个整数,用int(b[2:], 16)对它进行普通数学运算,然后用hex()作为普通再次计算

最新更新