有一种简单的方法可以将二进制位集转换为十六进制吗?该函数将在CRC类中使用,并且仅用于标准输出。
我曾考虑过使用to_ulong()将位集转换为整数,然后使用切换大小写将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();
这将产生type的结果std::string
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句