python - 如何在python中左移一个位数组

标签 python des

我有一个名为 c0 的位数组,包含 28 位

bitarray('1111011111111111111111110001')

如何将这个位数组左移多次,即一次左移,两次左移,等等? 现在向左一类没问题!

注意:这属于 bitarray包。

最佳答案

你可以使用切片:

def leftshift(ba, count):
    return ba[count:] + (bitarray('0') * count)

def rightshift(ba, count):
    return (bitarray('0') * count) + ba[:-count]

这些保持输入的位宽,在一端丢弃位并在另一端用 0 填充。

您可以创建自己的 bitarray 类型的子类:

class mybitarray(bitarray):
    def __lshift__(self, count):
        return self[count:] + type(self)('0') * count
    def __rshift__(self, count):
        return type(self)('0') * count + self[:-count]
    def __repr__(self):
        return "{}('{}')".format(type(self).__name__, self.to01())

演示:

>>> c0 = mybitarray(c0)
>>> c0
mybitarray('1111011111111111111111110001')
>>> c0 << 4
mybitarray('0111111111111111111100010000')
>>> c0 >> 4
mybitarray('0000111101111111111111111111')

也可以戳作者到support these operations natively .

关于python - 如何在python中左移一个位数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665821/

相关文章:

python - 使用Lambda函数进行分组和聚合

python - 几个大嵌套循环的小循环 vs 小嵌套循环的大循环性能?

python - Pandas 条形图没有显示我需要的东西

java - C# DES 与 Java DES Byte[] 和 BlockSize 不同

python - 使用 pycharm 创建的 Pyramid 项目引发 ValueError : Variable assignment

python - 检查两个图像的 RGB 值之间的差异

java - 在java中使用DES key 加密文本

javascript - javascript 中的 PHP crypt 函数 (STD_DES)

ios - swift中的DES加解密算法

c# - 使用 CryptoStream (DESCryptoServiceProvider) 解密时如何返回 byte[]