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

jow*_*eba 4 c++

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

Kei*_*son 10

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

unsigned charchar对于二进制字节数据,它比plain更好.

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

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

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