c++ - 将 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>
解决方案
试试这个:
#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;
输出:
推荐阅读
- ruby - 为什么 a[0] 返回 1 而 a[1] 返回 0 等等?
- javascript - 基于 NODE JS 中的两个对象数组创建组合数组
- ios - Make custom Publisher run on a different DispatchQueue on Swift Combine
- php - 如何将 CVS 文件中的数据导入到 laravel 中的 SQL 表中
- graphql - 来自棱镜的graphql-codegen错误响应
- android - 可以更改背景颜色的自定义 TextView
- python - Def's and break and continue
- docker - 为什么 docker 中没有安装 pandas?
- ruby-on-rails - 关于将谷歌地图添加到rails页面的问题
- reactjs - 如何通过使用reactjs获取在左侧显示回复的消息并在右侧显示回复的消息