Nagłówek bloku Bzip2: 1AY & SY
To jest pytanie o bzip2format archiwum. Każde archiwum Bzip2 składa się z nagłówka pliku, jednego lub więcej bloków i struktury ogona. Wszystkie bloki powinny zaczynać się od „1AY & SY”, 6 bajtów zakodowanych za pomocą BCD cyfr liczby Pi, 0x314159265359. Wedługźródło bzip2:
/*--
A 6-byte block header, the value chosen arbitrarily
as 0x314159265359 :-). A 32 bit value does not really
give a strong enough guarantee that the value will not
appear by chance in the compressed datastream. Worst-case
probability of this event, for a 900k block, is about
2.0e-3 for 32 bits, 1.0e-5 for 40 bits and 4.0e-8 for 48 bits.
For a compressed file of size 100Gb -- about 100000 blocks --
only a 48-bit marker will do. NB: normal compression/
decompression do *not* rely on these statistical properties.
They are only important when trying to recover blocks from
damaged files.
--*/
Pytanie brzmi: czy to prawda, że wszystkie archiwa bzip2 będą miały bloki z początkiem wyrównanym do granicy bajtu? Mam na myśli wszystkie archiwa utworzone przez implementację referencyjną bzip2, narzędzia bzip2-1.0.5 +.
Myślę, że bzip2 może analizować strumień nie jako strumień bajtów, ale jako strumień bitów (sam blok jest kodowany przez huffmana, który nie jest dopasowany bajtowo według projektu).
Innymi słowy: jeśligrep -c 1AY&SY
większy (huffman może generować 1AY i SY wewnątrz bloku) lub równy liczbie bloków bzip2 w pliku?