21xrx.com
2024-11-08 22:12:38 Friday
登录
文章检索 我的文章 写文章
C++如何将十六进制转换成二进制
2023-07-08 08:29:21 深夜i     --     --
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函数将十六进制字符串转换成二进制字符串。函数中,先将十六进制字符转换成整数,然后再将整数转换成二进制数。最后,将所有的二进制数合并起来,得到完整的二进制字符串。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复