3

zlib で圧縮された文字列に空白を含めることはできますか? 空白とは、「 」、\n、\t を意味します。

4

2 に答える 2

9

zlib で圧縮された文字列には、任意のバイトを含めることができます。

実際、適切に圧縮された十分な長さの文字列の場合、任意のバイト (0 から 255 まで) はほぼ等しい確率を持つ必要があります。さもなければ、文字列をさらに圧縮することができます。

たとえば、Python を使用して、これを自分で試すことができます。

>>> z = open('/dev/urandom').read(1000000).encode('zlib') # compress a long string of junk
>>> [z.count(chr(i)) for i in range(256)] # number of occurrences of each byte
[3936, 3861, 3978, 3951, 3858, 3937, 3945, 3828, 3984, 3871, 3985, 
 3961, 3879, 3924, 3817, 3984, 3963, 3858, 4029, 3903, 3884, 3817, 
 ... yada ...
于 2009-05-16T23:47:11.917 に答える
6

はい; それは単なるバイトのストリームです。そこには任意のバイト値が表示されます (空白文字よりも問題を引き起こす可能性が高いゼロを含む)。

于 2009-05-16T23:36:46.963 に答える