使用stringstream 以及bitset<8> 实现输出16进制数

关于bitset的一些用法

强调std::vector<bool> 会被特化为bitset。

四个字节表示一个bool值回被 用一个bit位取代,因此会导致迭代器失效,所以进行状态压缩时应当考虑使用bitset容器。

bitset可以通过u_char进行初始化

1     u_char tmp = 'a';
2     std::cout << (std::bitset<8>(tmp)) << std::endl;
3     //程序输出:01100001

这样也可以

1     u_char t = 0xff;
2     std::cout << (std::bitset<8>(t)) << std::endl;
3     //程序输出:11111111

bitset容器可以轻松的将各种进制形式编程2进制形式

 

附:将bitset转换为16进制输出的函数

 1 /**
 2  * @brief bitsetToHex 将8位bitset转换为十六进制字符串表示形式
 3  *
 4  * @param bits 输入的8位bitset
 5  * @return std::string 返回十六进制字符串
 6  */
 7 std::string connectToRedis::ToolUtils::bitsetToHex(const std::bitset<8> &bits) {
 8 
 9     // 将bitset转换为整数
10 
11     auto intValue =  static_cast<u_char>(bits.to_ullong());
12 
13     // 使用stringstream将整数转换为16进制字符串
14     std::stringstream ss;
15     ss << "0x" << std::hex <<std::setw(2)<<std::setfill('0')<< static_cast<uint16_t>(intValue);
16 
17     return ss.str();
18 }

参考链接:bitset - OI Wiki (oi-wiki.org)

posted @ 2024-09-25 16:34  BlackSnow  阅读(145)  评论(0)    收藏  举报