首页 > 解决方案 > 无符号整数到有效数字

问题描述

你好我正在做一个项目。获取无符号 16 位数字并将它们平均。平均起来没问题,但是当我尝试打印到屏幕上时,它会打印出无意义的符号。所以我想我必须将它转换为十进制。Vs2015 转换它,但我想自己做,因为我的代码是用于微处理器的。这是我的模拟...

int main(){

uint32_t  x = 0x12345678;
unsigned char c[4];

c[0] = x >> 24;// least significant 
c[1] = x >> 16;
c[2] = x >> 8;
c[3] = x;   // most significant
cout << x << endl;
cout << c[0] << endl;
cout << c[1] << endl;
cout << c[2] << endl;
cout << c[3] << endl;
system("pause");
return 0;

}

输出:

305419896 


4
V
x

标签: c++inthexdecimalunsigned

解决方案


这里的问题是,插入运算符<<会将char变量视为字符而不是数字。因此,如果char变量包含 65,则它不会打印 65,而是打印“A”。

您需要将值转换为unsigned int.

所以:

std::cout << static_cast<unsigned int>(c[0]) << "\n";

然后它会给你预期的输出。


推荐阅读