使用 uint8_t 或 char 来表示以字节排列的二进制数据更好吗?
Is it better to use uint8_t or char to represent binary data arranged in bytes?
我喜欢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
将不存在(因为不会有满足其要求的类型)。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么不;名字在地图上是按顺序排列的吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 正在尝试重载二进制搜索树分配运算符
- 如何排列二进制字符串以最小化它们之间的距离
- 使用 uint8_t 或 char 来表示以字节排列的二进制数据更好吗?
- 非递归二进制字符串排列生成器
- 特定的二进制排列生成函数