我有一個帶有序列化形式資料的 python 串列my_list = [1,0,0,1,0,1,0,1,0,1,0,0,0,1,1,0]
我想將這個 16 位序列化資料連接到一個 int 中。16 位從 MSB 存盤到 LSB,MSB 在索引 0 中
我嘗試使用 for 回圈進行按位運算
tmp = 0;
for i in range(0,15)
tmp = tmp << 1 | my_list[i]
my_int = hex(tmp)
print(my_int)
但是,當我去列印時,它以十六進制顯示不正確的值。我可以將串列中的專案作為整數執行這些按位連接,還是需要將它們轉換為另一種資料型別。或者這無關緊要并且錯誤不是來自將它們連接為整數而是來自其他東西?
uj5u.com熱心網友回復:
你錯過了一個索引。for 回圈僅遍歷i從 0 到14的值(包括 0 到 14 )。要讓它遍歷所有 16 個值,您需要將端點設定為 16。
for i in range(16):
tmp = (tmp << 1) | my_list[i]
0x9546正如預期的那樣,這將輸出。
還有一種首選的撰寫方式(enumerate如果您還需要索引,也可以使用):
for bit in my_list:
tmp = (tmp << 1) | bit
uj5u.com熱心網友回復:
如果我沒有誤解,您想將二進制串列轉換為單個十進制整數嗎?你可以這樣做。
my_list = [1,0,0,1,0,1,0,1,0,1,0,0,0,1,1,0]
string_ints = [str(i) for i in my_list]
string_ints = ''.join(string_ints)
print(string_ints)
#1001010101000110
num = int(string_ints, 2)
print(num)
#38214
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490916.html
