我需要将十六进制值的字符串表示转换为字节值。我是Python的新手,我遇到了麻烦,因为我使用的其他语言没有强大的数据类型。我有一个Python表单(使用Glade创建),用户输入十六进制值以写入芯片的寄存器。
用户在文本字段中输入0x1D,我需要通过Adafruit 232H USB / SPI加密狗写出来。显然0x1D是一个字符串。 Adafruit spi.write()抛出一个错误:ValueError:string必须大小为1
我尝试使用
将String值转换为intintVal = 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放入代码本身即可?
答案 0 :(得分:0)
当您声明spi.write([0x1D, 0x12])
按预期工作时 - 只需忽略对hex
的调用并使用spi.write([hex1, hex2])
。
0x1D == 29
基本上实际字节看起来像00011101
。