Может ли сжатая zlib строка содержать пробелы? - PullRequest
2 голосов
/ 17 мая 2009

Может ли сжатая zlib строка содержать пробелы? Под пробелами я подразумеваю '', \ n, \ t.

Ответы [ 2 ]

9 голосов
/ 17 мая 2009

Любой байт может появиться в 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 ...
5 голосов
/ 17 мая 2009

Да; это просто поток байтов. Здесь может появиться любое значение байта (включая ноль, что скорее вызовет у вас проблемы, чем пробельные символы!)

...