2012-02-17 111 views
1

我是Python的新手,我試圖通過PyUSB從USB設備讀取一些值。好吧,它現在可以工作,但我遇到了一些麻煩:在從設備讀取數據時,PyUSB需要一個端點來讀取數據。該端點通過十六進制值進行標識。如果我讀的數據,如...' x81'和0x81之間的差別

dev.read('\x81', ...) 

...我得到一個錯誤「AttributeError的:‘NoneType’對象有沒有屬性‘bmAttributes’」。如果我讀數據像...

dev.read(0x81, ...) 

...它的工作原理。

所以我簡單的問題是:0x81和'\ x81'有什麼區別?

:-)

+1

一個字符串引用一個不存在的字符,而另一個是控制代碼? – Edwin 2012-02-17 22:45:46

回答

7

在Python 2.x中,'\x81'是一個字節串,由單個字節組成,值爲129.您也可以通過調用chr(129)來獲得它。

0x81是寫在基地16的整數,其值爲129.您還可以通過簡單地寫129得到它。

2

\ X81對應於的unicode caracters所述一個與81十六進制編碼,0x81表示一個有效的十六進制值。

+0

我的壞,它不是unicode caracter,否則它會被標記爲\ u。 – Faylixe 2012-02-17 22:54:18

2

第一個是一個字符串,用一個特定的十六進制值強制到第一個字符位置,第二個是一個整數。

顯然,API調用肯定會期望一個整數。

2

0x81正在發送一個它要求的十六進制數字,而'\ x81'正在發送一串字符。這就是爲什麼第二個工程,希望有所幫助,實際上你在問:)