考虑3个存储在数组中的2位整数
x1 = [
ad,
be,
cf,
]
上面显示了整数及其位,但它们存储为常规int
数组x1
是整数x = abcdef
的转置。
如何取消转换x1
以获取
x2 = [
ab,
cd,
ef,
]
数组x2
按自然顺序只是x
。
在python中执行此操作的有效方法是什么?
我的最终目标是对整数进行比较
因此,如果整数a
和b
存储为x1
,我希望通过查看a > b
和a1
来了解b1
。
任何实现这一目标的方法都是一个很好的答案。
我可以使用整数的字符串表示,但我想使用一些位移法术。
这个问题与Efficient way to transpose the bit of an integer in python?
相反答案 0 :(得分:2)
这是一种方式:
def untranspose(arr):
x,y,z = arr
a,d = divmod(x,2)
b,e = divmod(y,2)
c,f = divmod(z,2)
return f + 2*e + 4*d + 8*c + 16*b + 32*a
例如,
>>> untranspose([1,3,2])
30
[1,3,2]
对应
01
11
10
所以你想要整数011110:
>>> int('011110',2)
30