В спецификациях GNU для формата архива POSIX здесь структура заголовка определяется как:
struct posix_header
{ /* byte offset */
char name[100]; /* 0 */
char mode[8]; /* 100 */
char uid[8]; /* 108 */
char gid[8]; /* 116 */
char size[12]; /* 124 */
char mtime[12]; /* 136 */
char chksum[8]; /* 148 */
char typeflag; /* 156 */
char linkname[100]; /* 157 */
char magic[6]; /* 257 */
char version[2]; /* 263 */
char uname[32]; /* 265 */
char gname[32]; /* 297 */
char devmajor[8]; /* 329 */
char devminor[8]; /* 337 */
char prefix[155]; /* 345 */
/* 500 */
};
Поле заголовка size
определяется как массив символовдлиной 12, а длина поля в байтах, по-видимому, составляет 12 байтов (вывод из комментария смещения байта).Теоретически это обеспечивает 12 байтов (= 96 бит) пространства для хранения целого числа без знака.Однако я подозреваю, что это не так.
- Значение максимального размера равно всего 12 цифрам (999 999 999 999)?Или
- Поскольку это значение размера представляет количество байтов в файле, означает ли это, что значение размера может быть не совсем точным, поскольку размер данных может равняться числу битов, которое не делится на 8?Или же файлы всегда сохраняются с шагом 8 бит (с неиспользованными битами, заполненными для заполнения всего байта), и, таким образом, длина данных в битах всегда будет делиться на 8?