我試圖找出一種方式來編碼/解碼二進制數據,使得新行字符不是編碼字符串的一部分。編碼二進制數據,以便 n逃脫
這似乎是一個遞歸問題,但我似乎無法找到解決方案。
例如天真的執行:
>>> original = 'binary\ndata'
>>> encoded = original.replace('\n', '=n')
'binary=ndata'
>>> decoded = original.replace('=n', '\n')
'binary\ndata'
如果原始字符串中已經有=n
會發生什麼?
>>> 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'
我該如何解決這個遞歸問題?
出了什麼問題[Base64編碼(http://en.wikipedia.org/wiki/Base64)? –
@DourHighArch編碼值的大小很重要。 Base64的開銷約爲33%。我需要將它縮小爲與原始尺寸相似。 –
你爲什麼「需要」那個? [〜25%的開銷](http://en.wikipedia.org/wiki/Base85)如何?輸出是否必須是ASCII?爲什麼換行符不可接受?這聽起來像是一個XY問題;你需要告訴我們這些奇怪的要求來自哪裏。 –