在 Python 中将整数转换为 2 字节的十六进制值
问题:在 Python 中将整数转换为 2 字节的十六进制值 对于 tkinter GUI,我必须以“0x00”的形式读取十六进制地址来设置 I2C 地址。我目前这样做的方式是将输入读取为字符串,将字符串转换为整数,然后将该整数转换为实际的十六进制值,如下面的部分代码所示: 界面初始化: self.I2CAddress=StringVar() self.I2CAddress.set("0x00")
·
问题:在 Python 中将整数转换为 2 字节的十六进制值
对于 tkinter GUI,我必须以“0x00”的形式读取十六进制地址来设置 I2C 地址。我目前这样做的方式是将输入读取为字符串,将字符串转换为整数,然后将该整数转换为实际的十六进制值,如下面的部分代码所示:
界面初始化:
self.I2CAddress=StringVar()
self.I2CAddress.set("0x00") #Sets Default value of '0x00'
Label(frame, text="Address: ").grid(row=5, column=4)
Entry(frame, textvariable=self.I2CAddress).grid(row=5, column=5)
然后在函数内部:
addr = self.I2CAddress.get()
addrint = int(addr, 16)
addrhex = hex(addrint)
这适用于大多数值,但我的问题是,如果我输入一个小的十六进制值字符串,例如“0x01”,它会转换为正确的整数 1,但随后会转换为 0x1 而不是 0x01 的十六进制值。
我是一名 EE,并且编程经验非常有限,因此非常感谢任何帮助。
解答
使用format()
函数:
format(addrint, '#04x')
这会将输入值格式化为带有前导零的 2 位十六进制字符串以构成长度,并且包括“标准前缀”,在这种情况下为
0x
。请注意,宽度 4 包括该前缀。x
生成小写十六进制字符串;如果需要大写,请使用X
。
演示:
>>> for i in range(8, 12):
... print format(i, '#04x')
...
0x08
0x09
0x0a
0x0b
更多推荐
目录
所有评论(0)