我有以下代码:
const unsigned char *a = (const unsigned char *) input_items;
input_items基本上是二进制文件的内容。
现在a[0]=7,我想把这个值转换成无符号的int
unsigned int b = (unsigned int) a[0];
并打印这两个值,我得到:
a[0] = 7
b = 55
为什么b不包含7?如何得到b=7?
我想我现在看到了问题:您将字符的值打印为字符:
unsigned char a = '7';
std::cout << a << 'n';
这将使用ASCII值55
打印字符'7'
。
如果要获得数字字符的相应整数值,可以依赖于所有数字字符必须连续编码,从零开始,到九结束。这意味着你可以从任何数字字符中减去'0'
,得到它的整数值:
unsigned char a = '7';
unsigned int b = a - '0';
现在b
将等于整数值7
。