首页 > 解决方案 > 在 C++ 中将 16 位值转换为 32 位值

问题描述

在 C++ 中,通过用 0 填充额外的 2 个字节(即不改变值但只改变变量的大小),这是在 C++ 中将 16 位值转换为 32 位值的最有效方法。

标签: c++

解决方案


包含<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

推荐阅读