我喜欢 uint8_t,因为我觉得它的意图(二进制数据,而不是字符)表达得更好。但是,有许多我可能想要调用的基于字符的 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
将不存在(因为不会有满足其要求的类型)。
关于c++ - 用 uint8_t 或 char 来表示按字节排列的二进制数据哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296997/