【问题标题】:How to convert string to hex in Python? [duplicate]如何在 Python 中将字符串转换为十六进制? [复制]
【发布时间】: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。

标签: python hex


【解决方案1】:

hex() 函数将指定的整数转换为十六进制字符串表示

使用int(x, base) 以16 为基数将字符串x 转换为整数。以整数为数字调用 hex(number) 将其转换为十六进制。

hex_string = "0xAA"

"0x" also required

an_integer = int(hex_string, 16)

hex_value = hex(an_integer)

print(hex_value)

输出

0xaa

【讨论】:

  • 但我从 qline 编辑框中获取输出。如果我输入“AA”,那么如何使其成为 0xaa?
  • @Tenish 如链接的duplicate 问题中所述,使用int(string_value, 16)。请不要急于回答,阅读、学习理解
  • a = self.slave1.text(), self.slave1.text() 将有值“AA”(您输入的数据),您只需添加 0x。 a = "0x" + self.slave1.text ().
  • @ThuấnĐàoMinh 不,没有必要,int() 即使没有 0x 前缀也能很好地理解输入。
  • @ThuấnĐàoMinh 同样,您的第一句话是错误的:hex()number 转换为字符串(无论其类型或基数),而不是将字符串转换为十六进制:没有从编程的角度来看“转换为十六进制”;整数只是一个整数,基数只是一个“人类”表示:15 只是十进制的 15,十六进制的 0xf,或二进制的 1111,三只手张开手指,但它仍然是 " 的整数值 15".
猜你喜欢
  • 2014-11-16
  • 1970-01-01
  • 2013-02-07
  • 2011-05-15
  • 2020-01-09
  • 2020-06-20
  • 2012-09-06
  • 2017-08-23
  • 2014-03-19
相关资源
最近更新 更多