0
我有一個I²C寄存器的值,它的寬度是2個字節,如01C5(字符串)。 對於我的應用程序,我必須交換高位和低位字節。在Python中移位一個值
我試着這樣說:
valueLow = hex(int(value,16) >> 8)
valueHigh = hex(int(value,16) & 0x0011)
,但我得到的結果是,他們應該看看現在是什麼樣子。
你有更好的解決方案嗎?
我有一個I²C寄存器的值,它的寬度是2個字節,如01C5(字符串)。 對於我的應用程序,我必須交換高位和低位字節。在Python中移位一個值
我試着這樣說:
valueLow = hex(int(value,16) >> 8)
valueHigh = hex(int(value,16) & 0x0011)
,但我得到的結果是,他們應該看看現在是什麼樣子。
你有更好的解決方案嗎?
使用該工具來獲取字節交換價值:
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
感謝,看起來非常優雅。 但是由於「value」是一個字符串,它會生成以下消息:TypeError:不支持的操作數類型(s)<<:'str'和'int' 不幸的是,將「hex()」應用於「value」也會產生錯誤:TypeError:十六進制()參數不能轉換爲十六進制 – Creatronik
請將預期結果添加到您的問題 – knitti
結果是0x1和0x1,給定片段 – ZdaR
檢查[這個答案](http://stackoverflow.com/a/15036568/2365792) –