Python中的字节填充/取消填充

2024-10-01 13:32:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python编写一个小脚本来填充/取消压缩字节,因为我不知道怎么做,我只想先填充。在

所以,目标很简单,有一个有三个输入的函数,类似这样:ByteStuffing(flagbyte, escapebyte, frame) 和输出,在开始和结束处有标志字节,中间是填充帧。在

所以假设我的标志字节是Z,转义字节是A,帧LEONARDO

ByteStuffing(Z,A,LEONARDO) = ZLEONAARDOZ

p.s.转义字节也转义帧中的标志字符,而不仅仅是转义字节本身。在

解堵只是一个反作用。在

现在,我真的不熟悉编程,只是刚开始,所以我真的不是很有创造性,当谈到编码,这就是为什么我想从这个小的'项目',谁能给我一些想法如何开始这个问题?在

p.s Python版本2.7.12

编辑: 从Keerthana Prabhakaran的回答中我得出了这个结论。在

def applyByteStuffing(flagbyte, escapebyte, payload):

flagbyte = ("Z")
escapebyte = ("A")


x = payload.replace (escapebyte, escapebyte*2)
y = x.replace (flagbyte, escapebyte+flagbyte)
print (flagbyte + y + flagbyte)
return;

如果我试着这样测试:

^{pr2}$

if __name__ == '__main__':

test()

我收到断言错误。有人知道我的断言错误发生在哪里吗?在

只是想试试这个: applyByteStuffing("Z" , "A" , "TAZZA")

给我正确的输出:ztaaazaz


Tags: 函数目标字节标志错误断言framereplace
2条回答

你可以用结构更换()为此目的。用另一个字符串替换escapebyte,并用flagbyte填充结果字符串!在

>>> flagbyte + frame.replace(escapebyte,escapebyte*2)+ flagbyte
'ZLEONAARDOZ'

对于更新后的问题,您需要从applyByteStuffing返回一些内容,以便可以根据RHS上的字符串断言返回值。在

^{pr2}$

然后断言!在

assert applyByteStuffing('Z','A','LEONARDO') == 'ZLEONAARDOZ'
bits=[1,0,0,1,1,1,1,1,0,1,1,0]
stuffed=[]
count=0
for i in range(len(bits)):
    if bits[i]==1:
        count=count+1
        stuffed.append(bits[i])
    elif bits[i]!=1:
        count=0
        stuffed.append(bits[i])
    if count==5:
        stuffed.insert(i+1,0)
print stuffed
#Take any input the code works perfectly. #Tested

相关问题 更多 >