【问题标题】:Convert 16 bits to 4 char ( in Hexadecimal)将 16 位转换为 4 字符(十六进制)
【发布时间】:2019-01-09 16:05:04
【问题描述】:

我想将 16 位转换为 4 个十六进制字符。 比如一个16位,十六进制的1101 1010 1101 0001是DAD1,十进制是56017。现在我想把这16位转换成DAD1作为字符,这样我就可以用这个字符写入文本文件了。

我的编码部分,我的变量“CRC”是我从 CRC 校验和得到的结果。现在我想将 16 位“CRC”转换为 4 个字符,即 DAD1(大写字母)。

cout << hex << CRC<<endl;
char lo = CRC & 0xFF;
char hi = CRC >> 8;
cout << hi << endl;
cout << lo;

********结果********

爸爸1

【问题讨论】:

    标签: c++ converter visual-studio-express


    【解决方案1】:

    试试这个:

    #include <iostream>
    #include <bitset>
    #include <string>
    int main()
    {
        int i = 56017;
        std::cout <<hex <<i << std::endl;
        std::bitset<16> bin = i;
        std::string str = bin.to_string();
        std::bitset<8> hi(str.substr(0, 8));
        std::bitset<8> lo(str.substr(8, 8));
        std::cout << bin << std::endl;
        std::cout << hi << " " << hi.to_ullong() << std::endl;
        std::cout << lo << " " << lo.to_ullong() << std::endl;
    }
    

    或者你也可以这样做

    std::cout <<hex << (CRC & 0xFF)<< std::endl;
    std::cout << hex << (CRC >> 8) << std::endl;
    

    输出:

    【讨论】:

      【解决方案2】:

      试试这个:

      #include <iostream>
      #include <bitset>
      #include <limits>
      
      int main()
      {
          int i = 56017;
          std::bitset<std::numeric_limits<unsigned long long>::digits> b(i); 
          std::cout<< std::hex << b.to_ullong();    
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 2018-01-31
        • 1970-01-01
        • 1970-01-01
        • 2018-01-22
        • 2017-03-09
        相关资源
        最近更新 更多