一、类型定义与字节大小
uint8_t
、uint16_t
、uint32_t
、uint64_t
是 C/C++ 中定义的无符号整数类型,通过 typedef
对基础类型起别名实现。位宽(bit)和字节数严格固定:
uint8_t:
8 位,占用 1 字节(范围:0 - 255)uint16_t:
16 位,占用 2 字节(范围:0 - 65535)uint32_t:
32 位,占用 4 字节(范围:0 - 4294967295)uint64_t:
64 位,占用 8 字节(范围:0 - 18446744073709551615)
二、数值范围与存储特性
1.数值范围
无符号类型的最大值均为 2位数−1,例如:
uint8_t:最大值为2的八次方减一得255
2.存储特性
- 二进制兼容性:跨平台数据传输时,固定位宽可避免因
int
等类型位宽不一致导致的解析错误。
三、注意事项
1.输出与转换
uint8_t
本质是unsigned char
,直接输出时会显示 ASCII 字符而非数值。例如,uint8_t a = 65
输出为'A'。
- 需显式转换为
uint16_t
或int
才能输出数字值。
2.字符串操作
uint8_t
与字符串互转时,会取首个字符的 ASCII 码(如"65"
转为uint8_t
会得到'6'
的 ASCII 码 54)。
3.跨平台兼容性
- 标准要求这些类型在所有平台上保持位宽一致,而普通
int
、long
等类型的长度可能因系统位数不同而变化。
四、与int型对比
int
的位宽由平台决定(如 32 位系统为 4 字节,16 位系统为 2 字节),而uint32_t
始终为 4 字节。