[英]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.