【问题标题】:C ++: library for conversion, Ex: binary -> decimal | binary -> hexadecimal etcC ++:用于转换的库,例如:二进制 -> 十进制 |二进制 -> 十六进制等
【发布时间】:2021-11-18 07:32:05
【问题描述】:

对于我的项目,我需要转换一些数字,例如:

  1. 二进制 --> 十进制
  2. 十进制-->二进制
  3. 二进制 --> 十六进制
  4. 十六进制 --> 二进制
  5. 等等……

我尝试创建一些函数,但它的操作时间很长,我立即需要一个转换器。

有人知道这样做的图书馆,那么,我在哪里可以找到它。

【问题讨论】:

标签: c++ converters


【解决方案1】:

您可以使用 stoi 函数将二进制/十六进制/八进制格式的值转换为十进制数:

#include <iostream>
#include <string>

int main() {
  std::string hex("BAF");
  std::string bin("1111");
  std::string octal("734");

  std::cout << "Hex: " << hex << " => " << std::stoi(hex, 0, 16) << std::endl;
  std::cout << "Bin: " << bin << " => " << std::stoi(bin, 0, 2) << std::endl;
  std::cout << "Octal: " << octal << " => " << std::stoi(octal, 0, 8)
            << std::endl;
}

对于其他转换(从十进制到二进制/十六进制/八进制),您应该实现自己的函数。您可以使用 std::bitset 来帮助您。

【讨论】:

  • 好的,谢谢你,你很有帮助
  • 好的,但是有没有一种方法可以将十六进制转换为二进制并反过来
【解决方案2】:

涉及字符串和数字的一些步骤示例

#include <iostream>
#include <bitset>
#include <cassert>
#include <string>
#include <sstream>

int main()
{
    auto binary = std::stoi("0110", nullptr, 2);
    auto hex = std::stoi("f", nullptr,  16);

    assert(binary == 6);
    assert(hex == 15);

    std::stringstream os;

    os << std::hex << hex;  // todo add formatters.
    std::cout << os.str() << std::endl;

    std::bitset<4> bits{ binary };
    std::cout << bits.to_string() << std::endl;

    return 0;
}

【讨论】:

  • 好的,谢谢你,你很有帮助
  • 好的,但是有没有一种方法可以将十六进制转换为二进制并反过来
  • 你的意思是直接从字符串到字符串?不,但您可以通过此处答案中的代码 sn-ps 轻松为自己构建它们
猜你喜欢
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 2011-10-11
  • 2012-06-26
  • 2014-01-07
  • 2012-04-08
  • 1970-01-01
  • 2015-12-12
相关资源
最近更新 更多