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

时间:2014-01-23 00:27:37

标签: c++

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

1 个答案:

答案 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将不存在(因为没有类型满足其要求)。