我喜欢uint8_t,因为我觉得意图(二进制数据,而不是字符)表达得更好。但是,我可能想要调用许多基于字符的I / O函数。只是想知道人们是否符合最佳实践?这是我第一次涉足字节级I / O.
答案 0 :(得分:10)
char
的问题是它可能是带符号的类型(范围至少为-127 .. + 127)或无符号类型(范围至少为0..255)
unsigned char
优于普通char
。
uint8_t
,如果它存在,则与unsigned char
具有相同的范围和表示,并且可能只是同一类型的另一个名称。
请注意,C ++(如C)将 byte 定义为给定系统上最小的可寻址存储单元。它至少 8位,并且在您可能使用的任何系统上可能正好是8位,但允许更宽。 CHAR_BIT
或<stddef.h>
中定义的宏<cstddef>
会告诉您字节中的位数。
如果您想绝对保证使用8位字节,请查询CHAR_BIT
的值或使用uint8_t
。如果字节大于8位,则uint8_t
将不存在(因为没有类型满足其要求)。