C ++:用于转换的库,例如:二进制 -> 十进制 |二进制 -> 十六进制等

Posted

技术标签:

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

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

    二进制 --> 十进制 十进制-->二进制 二进制 --> 十六进制 十六进制 --> 二进制 等等……

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

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

【问题讨论】:

这能回答你的问题吗? How can I convert hexadecimal numbers to binary in C++? 不清楚是否需要转换数字或字符串。 【参考方案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 轻松为自己构建它们

以上是关于C ++:用于转换的库,例如:二进制 -> 十进制 |二进制 -> 十六进制等的主要内容,如果未能解决你的问题,请参考以下文章

将文字转换为左值

C语言怎么把字符串转换为可以用于计算的数字

在 Windows 和 Linux 下,在 C 中将 UTF-16 转换为 UTF-8

在C中将大十进制输入转换为256位数组中的十六进制输出

C#中怎么将string转换成int型

用于 C++ 抽象语法树组合和代码生成的库 [关闭]