Python 将十六进制的文本表示形式转换为十六进制字节

Python 将十六进制的文本表示形式转换为十六进制字节,python,python-2.7,Python,Python 2.7,我需要将十六进制值的字符串表示形式转换为字节值。我是Python新手,在这方面遇到了麻烦,因为我使用的其他语言没有强大的数据类型。我有一个Python表单(用Glade创建),用户在其中输入十六进制值以写入芯片寄存器 用户在文本字段中输入0x1D,我需要通过Adafruit 232H USB/SPI加密狗将其写出。显然0x1D是一个字符串。Adafruit spi.write()抛出错误:ValueError:字符串的大小必须为1 我已尝试使用 intVal = int(label.get_te

我需要将十六进制值的字符串表示形式转换为字节值。我是Python新手,在这方面遇到了麻烦,因为我使用的其他语言没有强大的数据类型。我有一个Python表单(用Glade创建),用户在其中输入十六进制值以写入芯片寄存器

用户在文本字段中输入0x1D,我需要通过Adafruit 232H USB/SPI加密狗将其写出。显然0x1D是一个字符串。Adafruit spi.write()抛出错误:ValueError:字符串的大小必须为1

我已尝试使用

intVal = int(label.get_text(), 0)
返回输入的十六进制字符串的正确整数值。 使用hex(intVal)将其转换回十六进制值确实会返回正确的十六进制值,但它还是作为字符串。我想我需要这个字节值

spi.write([0x1D, 0x12]) 
如果我在python代码本身中设置这些值,那么它们在这种情况下显然不是字符串,但是如果我将这些相同的值放入表单中,并将其取出,那么当然不会

l = builder.get_object("label1")
v = builder.get_object("entry1")
hex1= int(l.get_text(), 0)
hexReg= hex(hex1)
hex2= int(v.get_text(), 0)
hexVal = hex(hex2)
spi.write([hexReg, hexVal])
我将所有这些拆分为几行,显式调用,以尝试调试问题


那么,如何将这些十六进制字符串转换为只需将0x1D放入代码本身即可得到的原始十六进制值呢?

当您声明
spi.write([0x1D,0x12])
按预期工作时-只需省略对
hex
的调用,并使用
spi.write([hex1,hex2])


0x1D==29
基本上实际字节看起来像
00011101

您是否尝试过传递
hex1
hex2
而不是
hexReg
hexVal
?如果
spi.write([0x1D,0x12])
起作用,这相当于执行
spi.write([29,18])