在Python中将整数转换为2字节十六进制值

2024-04-19 19:14:10 发布

您现在位置:Python中文网/ 问答频道 /正文

对于tkinter图形用户界面,必须以“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,有非常有限的编程经验,所以任何帮助都是非常感谢。


Tags: 字符串selftkinter地址column整数i2c图形用户界面
1条回答
网友
1楼 · 发布于 2024-04-19 19:14:10

使用^{} function

format(addrint, '#04x')

这会将输入值格式化为一个2位十六进制字符串,前导零组成长度,#在本例中包括“标准前缀”0x。注意,4的宽度包含该前缀。x生成小写十六进制字符串;如果需要大写,请使用X

演示:

>>> for i in range(8, 12):
...     print format(i, '#04x')
... 
0x08
0x09
0x0a
0x0b

相关问题 更多 >