c++ - 在 C++ 中将 16 位值转换为 32 位值
问题描述
在 C++ 中,通过用 0 填充额外的 2 个字节(即不改变值但只改变变量的大小),这是在 C++ 中将 16 位值转换为 32 位值的最有效方法。
解决方案
包含<cstdint>
标头并使用 16 位值初始化 32 位整数。一定要注意你的迹象。在下面的示例中,我将所有整数值(有符号或无符号)转换为无符号 32 位整数。
示例转换
#include <iostream>
#include <cstdint>
#include <iomanip>
using namespace std;
void dumpVar(const uint32_t value)
{
cout << setfill('0') << setw(8) << hex << value << endl;
}
int main()
{
uint16_t test1 = 0xffff;
int16_t test2 = 32767;
uint16_t test3 = 0xf33e;
int16_t test4 = -32768;
dumpVar(test1);
dumpVar(test2);
dumpVar(test3);
dumpVar(test4);
return 0;
}
样本输出
请注意负数如何不像您预期的那样填充零。这只是符号位的功能。
0000ffff
00007fff
0000f33e
ffff8000
推荐阅读
- react-native - 如何写如果数字的条件必须在反应原生的9到11位之间
- arrays - React:如何从状态映射嵌套数组对象?
- liquibase - Liquibase Failed SQL: (933) 在 Oracle 中插入数据时出错
- javascript - 'à' 使用 JSON 的法语字符显示显示错误
- windows - 如何使用命令行在 Windows 10 操作系统中设置环境变量?
- python - Django-找不到页面/登录错误的原因是什么
- c# - 如果在 lambda 之前实例化对象而不是在 lambda 内部实例化对象,C# 闭包行为会发生变化吗?
- windows - 使用 KERBEROS 时 Jmeter 挂起
- angular - 为什么单击 mat-tab-group 时文本会移动
- python - Sublime Text 没有向我显示简单任务的任何输出