一般情况下,我们所使用的Linux操作系统的分区格式通常为 ext4 或者 XFS 文件系统。
在ext4文件系统的源码中,文件名长度通过ext2_dir_entry_2函数实现。函数中定义了字段name_len,它是一个8位的无符号整数(__u8),用于存储文件名的长度。因此,ext4文件系统文件名的最大长度就被限制为2的8次幂,即0-255,源码如下:
struct ext2_dir_entry_2 {
__le32 inode; /* Inode number */
__le16 rec_len; /* Directory entry length */
__u8 name_len; /* Name length */
__u8 file_type;
char name[]; /* File name, up to EXT2_NAME_LEN */
};
在XFS文件系统的源码中,文件名长度通过xfs_dir2_sf_entry函数实现。函数中定义了字段namelen,它是一个8位的无符号整数(__uint8_t),用于存储文件名的长度。因此,XFS文件系统文件名的最大长度就被限制为2的8次幂,即0-255,源码如下:
typedef struct xfs_dir2_sf_entry {
__uint8_t namelen; /* actual name length */
__uint8_t offset[2]; /* saved offset */
__uint8_t name[]; /* name, variable size */
__uint8_t filetype; /* type of inode */
xfs_dir2_data_off_t tag; /* starting offset of us */
} xfs_dir2_sf_entry_t;
字符编码是现实世界文字与计算机语言之间的桥梁。现实世界中的每个文字或字符都有一个对应的字符编码,当我们在计算机中输入这些文字时,系统会将其转换为字符编码以便计算机识别和处理。字符编码以数字形式表示,而这些数字最终会被转化为二进制代码。
在计算机中,字符是一个信息单位,字节是计算机存储容量的基本单位。不同的字符,编码方式不一样,占用计算机存储空间的大小就不一样。