下面的代码首先工作两次,然后第三次转换为 ulong 失败并给我一个 0XCF 而不是 0xF3。知道问题是什么吗?似乎是 VS 2010 to_long 中的一个错误。二进制“11110011”应转换为十六进制 F3!以下是在 VS 2010 下运行调试时的结果。
1ST TIME bc_bit_char b'11000011' 转换为 k = x'000000c3'; 第二次:bc_bit_char b'00111100' 转换为 k = x'0000003c' 第三次:bc_bit_char b'11110011' 转换为 k = x'000000cf' 错误!s/b x'000000f3'
std::bitset<8> bc_bit_char (00000000);
unsigned char bc_char=' ', bc_convert_char=' ';
unsigned long k=0, bc_rows=0;
k = bc_bit_char.to_ulong(); // convert 8 bits to long integer with same bits
bc_convert_char = static_cast<unsigned char> (k); // convert long integer to unsigned