2015-06-02 21 views
0

我有一個I²C寄存器的值,它的寬度是2個字節,如01C5(字符串)。 對於我的應用程序,我必須交換高位和低位字節。在Python中移位一個值

我試着這樣說:

valueLow = hex(int(value,16) >> 8) 
valueHigh = hex(int(value,16) & 0x0011) 

,但我得到的結果是,他們應該看看現在是什麼樣子。

你有更好的解決方案嗎?

+1

請將預期結果添加到您的問題 – knitti

+0

結果是0x1和0x1,給定片段 – ZdaR

+0

檢查[這個答案](http://stackoverflow.com/a/15036568/2365792) –

回答

0

使用該工具來獲取字節交換價值:

swappedValue = hex(value<<8&0xff00 | value>>8&0x00ff) 

,或者,如果值是一個字符串,

swappedValue = hex(int(value,16)<<8&0xff00 |int(value,16)>>8&0x00ff) 

如果你需要一個數字(I2C),嘗試:

swappedValue = int(value,16)<<8&0xff00 | int(value,16)>>8&0x00ff 
+0

感謝,看起來非常優雅。 但是由於「value」是一個字符串,它會生成以下消息:TypeError:不支持的操作數類型(s)<<:'str'和'int' 不幸的是,將「hex()」應用於「value」也會產生錯誤:TypeError:十六進制()參數不能轉換爲十六進制 – Creatronik