1

下面的代码首先工作两次,然后第三次转换为 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 
4

1 回答 1

1

关于哪个位最重要,哪个位最不重要存在混淆。在您提供的二进制常量中,最左边的位是最不重要的位 0。在 提供的十六进制值中to_long,最左边的位是最重要的第 7 位。如果你颠倒一个或另一个,那么它们将是平等的。

于 2014-04-17T03:12:56.117 回答