簡體   English   中英

在python中將32位解釋為Integer

[英]Interpret 32 bits as Integer in python

我從文件中讀取位。 第一個值是

bits = str(11101111010110011000000000000001)

這是帶符號的32位整數的二進制表示,因此它已經是二進制補碼和小尾數。 我認為我想要的價值是

-279347199

至少這個網站將其轉換為http://www.binaryconvert.com/result_signed_int.html?hexadecimal=EF598001

我發現解決這個問題的一切都將這些位解釋為純二進制,沒有二進制補碼和小端

從兩個補碼轉換的巧妙技巧是從末尾找到1並用其補碼替換其余的位。

def convert_from_twosc(bits):
    bits = bits[::-1]
    for bit in bits:
        if bit == '1':
            for new_bit in range(bits.index(bit) + 1, len(bits)):
                if bits[new_bit] == '0':
                    bits[new_bit] = '1'
                else:
                    bits[new_bit] = '0'
            break
    return "".join(map(str, bits[::-1]))
bits = input()
number = int(convert_from_twosc(list(bits)) , 2) * -1
print(number)

輸出:

11101111010110011000000000000001
-279347199

此函數始終假定輸入,是帶符號的負數,因此請小心。

暫無
暫無

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

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