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

Python中的字节填充/取消填充,python,byte,Python,Byte,我想用python写一个小脚本,它可以进行字节填充/取消填充,因为我不知道怎么做,我只是想先填充 因此,目标很简单,有一个具有三个输入的函数,类似这样:ByteStuffing(flagbyte,escapebyte,frame) 并在开始和结束时输出标志字节,在中间填充帧 假设我的标志字节是Z,转义字节是A,帧是LEONARDO ByteStuffing(Z,A,LEONARDO)=zleonardoz p、 转义字节也转义帧中的标志字符,而不仅仅是转义字节本身 取消填充只是反向功能 现在,我

我想用python写一个小脚本,它可以进行字节填充/取消填充,因为我不知道怎么做,我只是想先填充

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

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

ByteStuffing(Z,A,LEONARDO)=zleonardoz

p、 转义字节也转义帧中的标志字符,而不仅仅是转义字节本身

取消填充只是反向功能

现在,我真的不熟悉编程,只是刚刚开始,所以在编码方面我真的不是很有创意,这就是为什么我想从这个小“项目”开始,有人能给我一些如何开始解决这个问题的想法吗

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;
如果我试着这样测试它:

def test():


assert applyByteStuffing("Z", "A", "TAZZA") == "ZTAAAZAZAAZ" 
如果

test()

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

只是尝试一下:
applybytefinding(“Z”、“A”、“TAZZA”)

给我正确的输出:ztaaazazaz

您可以为此使用str.replace()。用另一个重复的字符串替换转义字节,并用flagbyte填充结果字符串

>>> flagbyte + frame.replace(escapebyte,escapebyte*2)+ flagbyte
'ZLEONAARDOZ'
对于更新后的问题,您需要从
applyByteFilding
返回一些内容,以便可以针对RHS上的字符串断言返回值

def applyByteStuffing(flagbyte, escapebyte, payload):
    x = payload.replace (escapebyte, escapebyte*2)
    y = x.replace (flagbyte, escapebyte+flagbyte)
    return flagbyte + y + flagbyte #return value
然后断言

assert applyByteStuffing('Z','A','LEONARDO') == 'ZLEONAARDOZ'
为此,可以使用str.replace()。用另一个重复的字符串替换转义字节,并用flagbyte填充结果字符串

>>> flagbyte + frame.replace(escapebyte,escapebyte*2)+ flagbyte
'ZLEONAARDOZ'
对于更新后的问题,您需要从
applyByteFilding
返回一些内容,以便可以针对RHS上的字符串断言返回值

def applyByteStuffing(flagbyte, escapebyte, payload):
    x = payload.replace (escapebyte, escapebyte*2)
    y = x.replace (flagbyte, escapebyte+flagbyte)
    return flagbyte + y + flagbyte #return value
然后断言

assert applyByteStuffing('Z','A','LEONARDO') == 'ZLEONAARDOZ'

@妮卡,我不知道什么是小包装。我知道字节填充和位填充,我的意思是字节填充,而不是比特,我从来没有听说过字节填充before@NickA我不知道什么是小包装。我知道字节填充和位填充,我的意思是字节填充,不是bitah,我以前从未听说过字节填充。谢谢你的想法,我之前编辑过这个问题,说我还需要转义标志字节。因此,我对您的解决方案进行了一点扩展,它总体上是有效的。我现在将用新问题编辑我的问题:)很高兴它有帮助!我已经更新了断言错误的答案!谢谢你的想法,我之前编辑过这个问题,说我还需要转义标志字节。因此,我对您的解决方案进行了一点扩展,它总体上是有效的。我现在将用新问题编辑我的问题:)很高兴它有帮助!我已经更新了断言错误的答案!