首页 > 解决方案 > 将 16 位转换为 4 字符(十六进制)

问题描述

我想将 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

₸</p>

标签: c++convertervisual-studio-express

解决方案


试试这个:

#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;

输出:

在此处输入图像描述


推荐阅读