我正在尝试找出一种方法来编码/解码二进制数据,使换行符不是编码字符串的一部分。
这似乎是一个递归问题,但我似乎无法找到解决方案。
例如一个天真的实现:
>>> original = 'binary\ndata'
>>> encoded = original.replace('\n', '=n')
'binary=ndata'
>>> decoded = original.replace('=n', '\n')
'binary\ndata'
如果=n
原始字符串中已经存在 a 会发生什么?
>>> original = 'binary\ndata=n'
>>> encoded = original.replace('\n', '=n')
'binary=ndata=n'
>>> decoded = original.replace('=n', '\n')
'binary\ndata\n' # wrong
尝试逃避现有=n
的,但如果已经有一个逃逸的会发生什么=n
?
>>> original = '++nbinary\ndata=n'
>>> encoded = original.replace('=n', '++n').replace('\n', '=n')
'++nbinary=ndata++n'
我怎样才能解决这个递归问题?