假设我有 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
