将 16 位转换为 4 个字符(十六进制)
Convert 16 bits to 4 char ( in Hexadecimal)
我想将 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
┌
₸
试试这个:
#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;
输出:
试试这个:
#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();
}
我想将 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
┌
₸
试试这个:
#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;
输出:
试试这个:
#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();
}