使用 uint8_t 或 char 来表示以字节排列的二进制数据更好吗?

Is it better to use uint8_t or char to represent binary data arranged in bytes?

本文关键字:二进制 排列 数据 更好 字节 uint8 char 表示 使用      更新时间:2023-10-16

我喜欢uint8_t,因为我觉得意图(二进制数据,而不是字符)表达得更好。但是,我可能想要调用许多基于 char 的 I/O 函数。只是想知道是否有人们遵守的最佳实践?这是我第一次涉足字节级 I/O。

char的问题在于它可能是有符号类型(范围至少为 -127..+127)或无符号类型(范围至少为 0..255)。

对于面向二进制字节的数据,unsigned char比普通char更好。

uint8_t,如果存在,将具有与unsigned char相同的范围和表示形式,并且可能只是同一类型的另一个名称。

请注意,C++(如 C)将字节定义为给定系统上最小的可寻址存储单元。它至少是 8 位,在您可能使用的任何系统上可能正好是 8 位,但它允许更宽。宏CHAR_BIT,以<stddef.h><cstddef>定义,告诉你一个字节中的位数。

如果要绝对保证使用 8 位字节,请查询CHAR_BIT的值或使用uint8_t。如果字节大于 8 位,则uint8_t将不存在(因为不会有满足其要求的类型)。