Python中讀取到16進制數如何轉成有符號數值


場景:用Python模擬設備做 Modbus TCP 協議時,讀取到的寄存器值是S16(有符號16進制數),如何能得到正確的負數值呢?

代碼如下:

def get_s16(val):
    if val < 0x8000:
        return val
    else:
        return (val - 0x10000)

解釋:由於Python不是強類型的語言,對於數據的值的大小沒有嚴格的限制,所以可以直接通過做減法來獲得正確的負數值。如果是其他的強類型語言,就需要按照負數補碼原理來獲取到高位符號位值后再取反處理,獲得正確的負數值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM