C++如何将存储二进制数值的单个char类型字符转换为int数字
单char转十进制数值解决方案
核心原理
char本质是8位整型,不需要复杂位运算,仅需要处理有符号char的符号扩展问题即可得到正确数值。
分场景实现
场景1:存储的是0~127范围内的正数值,char默认是
signed char或使用unsigned char
直接强制类型转换即可得到正确值:char c = 0x03; // 对应存储的数值3 int val = (int)c; // val输出为3场景2:存储的是0~255范围内的数值,使用默认
signed char存储
需通过& 0xFF位运算清除符号扩展带来的高位冗余值:char c = 0xFF; // 对应存储的数值255,signed char下直接强转会得到-1 int val = c & 0xFF; // val输出为255位运算说明:
& 0xFF会保留char的低8位原始值,忽略int类型转换时符号位扩展产生的高位填充值,兼容有符号、无符号char的所有情况场景3:仅使用char的低n位存储数值(n<8)
调整位运算掩码即可提取对应位数值,例如仅使用低4位时:char c = 0x1F; // 低4位值为15 int val = c & 0x0F; // val输出为15
通用兼容函数
// 输入任意char类型变量,返回其存储的0~255范围十进制数值 int char_to_dec(char c) { return c & 0xFF; }
内容的提问来源于stack exchange,提问作者aye
相关产品推荐
相关产品推荐

