【发布时间】:2021-06-16 11:52:58
【问题描述】:
我使用 pyqt5 行编辑框作为我的输入框。我想从输入框中获取输入并将其从字符串转换为十六进制以发送到串行捕获。例如我做了这个但我没有成功:
a = hex(self.slave1.text())
b = hex(self.function1.text())
c = hex(self.address_msb1.text())
d = hex(self.address_lsb1.text())
e = hex(self.register_msb1.text())
f = hex(self.register_lsb1.text())
g = hex(self.crc_lsb1.text())
h = hex(self.crc_msb1.text())
hexConvert = [a,b,c,d,e,f,g,h]
想象一下:
a = "01"
b = "03"
c = "00"
d = "0A"
e = "00"
f = "04"
g = "64"
h = "0B"
而我的预期输出是
[0x01, 0x03, 0x00, 0x0A, 0x04, 0x64, 0x0B]
【问题讨论】:
-
不,问题是字符串到 int。如前所述,python 将始终“显示”整数,即使您创建基于十六进制的数字列表:
print([0x32, 0x2f])将输出[50, 47]。你认为的基数无关紧要,数字不会改变。 -
澄清:
0b101101 == 0x2d == 0o55 == 45(二进制、十六进制、八进制、整数)结果为True。而python总是使用整数来表示__repr__esentation。