Skip to main content
 首页 » 编程设计

python之在 python 中重新排列位

2025年05月04日24del

假设我有 A = 0b11110101。

我想像这个伪代码一样创建一个新的整数

B[0] = A[4] 
B[1] = A[7] 
B[2] = A[0] 
B[3] = A[6] 
B[4] = A[1] 
B[5] = A[2] 
B[6] = A[3] 
B[7] = A[5] 

我该怎么做?

也许我可以先创建一个数组 B,但最后我需要一个整数/二进制。

更新 #1

我做了这样的事情:

num=0 
pc1_tidyHex = [] 
 
pc1_tidyHex.append([tidyHex[56], tidyHex[48], tidyHex[40], tidyHex[32], tidyHex[24], tidyHex[16], tidyHex[8]]) 
num = int(''.join(map(str, pc1_tidyHex)))     
print(pc1_tidyHex) 
print(num) 

我得到了这个错误:

Traceback (most recent call last): 
  File "F:\TUC Aux\python\budi.py", line 47, in <module> 
    num = int(''.join(map(str, pc1_tidyHex))) 
ValueError: invalid literal for int() with base 10: "['0', '1', '1', '0', '1', '0', '0']" 

请您参考如下方法:

将整数 A 转换为从 LSB 到 MSB 的二进制字符串,然后使用索引操作该位

bin_map = [5,3,2,1,6,0,7,4] 
A = 0b11110101 
binA = bin(A)[2:][::-1] 
B = int(''.join(binA[i] for i in bin_map), 2) 
# B will be integer 175 or binary 0b10101111