Python二进制字符串移位

Python二进制字符串移位,python,bit-shift,Python,Bit Shift,我正在Python中研究DES算法 在其中一个函数即Fiestle函数中,我必须对元素进行异或运算才能得到密码 是否有任何方法可以在python中执行移位操作,下面是我尝试的代码: C0是111100001100101010101111 D0是010101010110011110001111 c0_d0=[] for i in range(1): t=[] t.append(C0) t.append(D0) c0_d0.append(t) #print c0_d

我正在Python中研究DES算法

在其中一个函数即Fiestle函数中,我必须对元素进行异或运算才能得到密码

是否有任何方法可以在python中执行移位操作,下面是我尝试的代码:

C0是111100001100101010101111

D0是010101010110011110001111

c0_d0=[]
for i in range(1):
    t=[]
    t.append(C0)
    t.append(D0)
    c0_d0.append(t)

#print c0_d0 

def str_to_bin(strr,shifts):
for i in range(1,17):
    temp=[]
    for j in range(1):
        temp.append(int(c0_d0[i-1][0])<<1)
        temp.append(int(c0_d0[i-1][1])<<1)
    c0_d0.append(temp)

return c0_d0
c0\u d0=[]
对于范围(1)中的i:
t=[]
t、 追加(C0)
t、 追加(D0)
c0_d0.追加(t)
#打印c0\U d0
def str_至_bin(strr,班次):
对于范围(1,17)内的i:
温度=[]
对于范围(1)内的j:

temp.append(int(c0_d0[i-1][0])尽量不要使用十进制或字符串编码的二进制;按原样使用数字更高效、更一致,Python支持将数字转换为其他基或从其他基转换

>>> C0=0b1111000011001100101010101111
>>> bin(C0<<1)
'0b11110000110011001010101011110'
特别不切实际的是,示例输出混合了字符串和数字形式的数据

下面是一个如何从字符串解析二进制文件的示例,以防您的程序将其作为输入接收,以及一种更直接的格式化方法

>>> D = int('0101010101100110011110001111', 2)  # parse as binary = base 2
>>> D
89548687
>>> format(D, '032b')
'00000101010101100110011110001111'

您想移位二进制字符串吗?我假设大小为28位(您没有指定大小,在python中,您不能依赖int内部表示法)。在这种情况下,请尝试以下操作:
C1=C0[1::+“0”
。但您的问题确实不清楚。要执行二进制操作,请使用整数或ByteArray(有效的整数列表).使用字符串操作既不舒适也不有效。
>>> D = int('0101010101100110011110001111', 2)  # parse as binary = base 2
>>> D
89548687
>>> format(D, '032b')
'00000101010101100110011110001111'