c - 可有效存储在 tar 存档标头的大小字段中的最大无符号整数是多少
问题描述
在此处的 POSIX tar 归档格式的 GNU 规范中,标头结构定义为:
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 的 char 数组,该字段的字节长度似乎为 12 个字节(由字节偏移注释推断)。这在理论上提供了 12 个字节(=96 位)的空间来存储一个无符号整数。但是,我怀疑情况并非如此。
- 最大尺寸值是否仅等于 12 位 (999,999,999,999)?或者
- 由于这个大小值表示文件中的字节数,这是否意味着大小值可能不完全准确,因为数据大小可能等于不能被 8 整除的位数?还是文件总是以 8 位的增量保存(填充未使用的位以填充整个字节),因此位的数据长度总是可以被 8 整除?
解决方案
推荐阅读
- autoit - 如何调试“不可访问变量上使用的下标”?
- docker - jwilder/nginx-proxy 和 jrcs/letsencrypt-nginx-proxy-companion 后面的 docker 中的 gitea
- python - 生成多个列表内容的所有可能组合,其中包含自定义字符
- android - 如何在android中进行全屏布局?
- sql - LINQ 中的 where 子句子查询
- python - 在不使用循环的情况下处理三个二维 numpy 数组
- php - 重定向后刷新页面
- pandas - keras 中的多 GPU 训练到底意味着什么?
- java - 重复元素时需要从数组中打印唯一的数字组合
- typo3 - 无法登录新的 TYPO3 10.4.8