c++ - 无符号整数到有效数字
问题描述
你好我正在做一个项目。获取无符号 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
解决方案
这里的问题是,插入运算符<<
会将char
变量视为字符而不是数字。因此,如果char
变量包含 65,则它不会打印 65,而是打印“A”。
您需要将值转换为unsigned int
.
所以:
std::cout << static_cast<unsigned int>(c[0]) << "\n";
然后它会给你预期的输出。
推荐阅读
- javascript - 正则表达式可以找到这样的模式吗?
- bash - 通过 Jenkins 管道访问运行 Matlab 的 Docker Slave 的命令行
- swift - changeRootViewController时出现unknow error:EXC_BAD_ACCESS (code=1, address=0x20)
- graphql - 使用第一个查询结果作为第二个查询的条件
- c# - 循环加载用户配置文件
- regex - Oracle SQL Regex 美元符号不能确定字符串的结尾
- file - TYPO3 如何生成文件的索引,如其 XML 网站导出数据所示?
- r - 为什么 print() 会改变我的函数的输出?
- javafx - 是否可以在我键入时自动格式化 JavaFX HTMLEditor 内容?
- python - Pandas 数据框分配引发 SettingWithCopyWarning