簡體   English   中英

將十六進制的文本表示形式轉換為十六進制字節

[英]Convert Text representation of Hex to hex bytes

我需要將十六進制值的字符串表示形式轉換為字節值。 我是Python的新手,因此遇到了麻煩,因為沒有像我使用的其他語言那樣強大的數據類型。 我有一個Python表單(由Glade創建),用戶在其中輸入十六進制值以寫入芯片的寄存器。

用戶在文本字段中輸入0x1D,我需要通過Adafruit 232H USB / SPI加密狗將其寫出。 顯然0x1D是一個字符串。 Adafruit spi.write()引發錯誤:ValueError:字符串的大小必須為1

我嘗試過將String值轉換為int

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM