使用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 }

浙公网安备 33010602011771号