c++ - 将二进制位集转换为十六进制 (C++)

标签 c++

有没有一种简单的方法可以将二进制位集转换为十六进制?该函数将在 CRC 类中使用,并且仅用于标准输出。

我考虑过使用 to_ulong() 将 bitset 转换为整数,然后使用 switch case 将整数 10 - 15 转换为 A - F。但是,我正在寻找更简单的东西。

我在网上找到这段代码:

#include <iostream>
#include <string>
#include <bitset>

using namespace std;
int main(){
    string binary_str("11001111");
    bitset<8> set(binary_str);  
    cout << hex << set.to_ulong() << endl;
}

效果很好,但我需要将输出存储在一个变量中,然后将其返回给函数调用,而不是直接将其发送到标准输出。

我曾尝试更改代码,但一直遇到错误。有没有办法更改代码以将十六进制值存储在变量中?或者,如果有更好的方法,请告诉我。

谢谢。

最佳答案

您可以将输出发送到 std::stringstream ,然后将结果字符串返回给调用者:

stringstream res;
res << hex << uppercase << set.to_ulong();
return res.str();

这将产生 std::string 类型的结果.

关于c++ - 将二进制位集转换为十六进制 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461478/

相关文章:

c++ - 在 C++ 中测量函数的执行时间

c++ - 不可用的 Ui 属性

c++ - OpenCV Unresolved 带有 objdetect.hpp 函数的外部错误 (C++)

c++ - 用于双重检查锁定的正确编译器内在函数?

c++ - 如何使用 C/C++ 在 Linux 中通过提供进程 ID 来获取父进程 ID?

c++ - 调试高内存使用率

c++ - 编程语言开发实践,如何将golang风格的接口(interface)编译为c++?

c++ - 无法使用 HTTPS 访问 gSOAP Web 服务

c++ - 如何为我的 Apache 模块定义自定义配置指令?

c++ - 如何在 Cygwin 文件结构中正确放置非默认 C++ 包