21xrx.com
2025-07-15 11:04:58 Tuesday
登录
文章检索 我的文章 写文章
C++如何将十六进制转换成二进制
2023-07-08 08:29:21 深夜i     26     0
C++ 十六进制 二进制 转换

在编程的过程中,经常需要处理各种进制的数。其中,十六进制和二进制是常见的两种进制数。在C++编程中,有时需要将十六进制数转换成二进制数。下面介绍一种简单的方法来实现这种转换。

方法一:使用bitset

C++中提供了一个bitset库,其中的bitset类可以将一个整数转换成二进制数。在使用bitset类时,需要引入 头文件。

代码如下:

#include <bitset>
#include <iostream>
#include <string>
int main()
{
  std::string hexStr = "3A"// 十六进制字符串
  int hexNum = std::stoi(hexStr, nullptr, 16); // 将十六进制字符串转换成整数
  std::bitset<8> binNum(hexNum); // 将整数转换成二进制数
  std::cout << binNum << std::endl; // 输出二进制数
  return 0;
}

在上面的代码中,需要先将十六进制字符串转换成整数,然后再使用bitset类将整数转换成二进制数。其中,bitset<8>表示将整数转换成8位二进制数,可以根据实际需要修改。最后,使用cout输出二进制数。

方法二:使用递归函数

另一种实现方法是使用递归函数。该方法会将十六进制数中的每一位转换成二进制数,然后将这些二进制数合并起来。

代码如下:

#include <iostream>
#include <string>
std::string hexToBin(std::string hexStr)
{
  std::string res = "";
  for (char& c : hexStr)
  {
    int decNum = 0;
    if (c >= '0' && c <= '9') decNum = c - '0';
    else if (c >= 'A' && c <= 'F') decNum = c - 'A' + 10;
    std::string binNum = "";
    while (decNum > 0)
    {
      binNum = std::to_string(decNum % 2) + binNum;
      decNum /= 2;
    }
    while (binNum.length() < 4) binNum = "0" + binNum;
    res += binNum;
  }
  return res;
}
int main()
{
  std::string hexStr = "3A"// 十六进制字符串
  std::string binStr = hexToBin(hexStr); // 将十六进制字符串转换成二进制字符串
  std::cout << binStr << std::endl; // 输出二进制字符串
  return 0;
}

在上面的代码中,使用hexToBin函数将十六进制字符串转换成二进制字符串。函数中,先将十六进制字符转换成整数,然后再将整数转换成二进制数。最后,将所有的二进制数合并起来,得到完整的二进制字符串。

  
  

评论区