作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

场景需求

经常会有将四位二进制的数据转化为十六进制的需求,比如1110转化为E,这种需求在进行数据处理时很常见。

话不多说,下方为具体实现函数和测试代码。

功能函数代码

/*** @brief bit4ToHex                        4位二进制转十六进制* @param s                                字符串表示的二进制数据* @return                                 十六进制的字符*/
char bit4ToHex(string s) {// 判断是否为4位if (s.size() != 4){return ' ';}// 判断是否有0和1之外的数值if (s.find_first_not_of("01") != string::npos){return ' ';}int t = (s[0] * 1 - 48) * 8 + (s[1] * 1 - 48) * 4 + (s[2] * 1 - 48) * 2 + (s[3] * 1 - 48) * 1;char ch = ' ';switch (t) {case 10:ch = 'A';break;case 11:ch = 'B';break;case 12:ch = 'C';break;case 13:ch = 'D';break;case 14:ch = 'E';break;case 15:ch = 'F';break;default:ch = char(t + 48);}return ch;
}

C++测试代码

#include <iostream>
#include <string>
#include <bitset>
#include <sstream>
using namespace std;
char bit4ToHex(string s) {if (s.size() != 4){return ' ';}if (s.find_first_not_of("01") != string::npos){return ' ';}int t = (s[0] * 1 - 48) * 8 + (s[1] * 1 - 48) * 4 + (s[2] * 1 - 48) * 2 + (s[3] * 1 - 48) * 1;char ch = ' ';switch (t) {case 10:ch = 'A';break;case 11:ch = 'B';break;case 12:ch = 'C';break;case 13:ch = 'D';break;case 14:ch = 'E';break;case 15:ch = 'F';break;default:ch = char(t + 48);}return ch;
}int main()
{string str;string result;while (cin >> str){if (str == "q"){break;}result += bit4ToHex(str);}cout << "result:" << result << endl;system("pause");return 0;
}

测试效果

图1 结果图

如上图所示,输入多个4位二进制数据,不符合要求的返回空格‘ ’,result后面为最终输出结果。

如果函数有什么可以改进完善的地方,非常欢迎大家指出,一同进步何乐而不为呢~

如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

C++-bit转hex(四位二进制转十六进制)相关推荐

  1. 四位二进制、十进制、四位十六进制相互转换(高位补零)python

    四位二进制.十进制.四位十六进制相互转换(高位补零) 四位二进制转十进制 十进制转四位二进制 十进制转十六进制 十进制转四位十六进制 四位十六进制转十进制 四位二进制转十进制 int(i, 2) 十进 ...

  2. 关于Java二进制和十六进制转化的一点问题

    今天在学习Spring Security在做密码加密配置时,有个地方需要做一个二进制和十进制的转化,自己便随手写了一个,没想到,在运行了几次之后始终验证不过,郁闷的不行,由于我用的是Spring Se ...

  3. 二进制,十进制,十六进制

    生活中其实很多地方的计数方法都多少有点不同进制的影子. 比如我们最常用的10进制,其实起源于人有10个指头.如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制. 至于二进制-- ...

  4. python二进制转十进制代码_python二进制转十六进制代码

    #二进制转化成十六进制 print("请输入一个二进制数\n") SUM1=[] SUM2=[] A=0 B=0 int1=[]#整数部分存放处 float1=[]#小数部分存放处 ...

  5. Java声效计算器(带有十进制转二进制和十六进制的功能)

    @TOC Java声效计算器(带有十进制转二进制和十六进制的功能) 声明: 这是我们学校老师布置的一次期末课设,我在课下看了一些关于Java用户图形界面的书,又结合北大教授的讲课的内容,完成了这次课设 ...

  6. 十进制转化为二进制与十六进制显示(汇编程序)

    stacks segment stack dw 200h dup(0);不太明白要200h这么大 stacks ends data segment in_buf db 6;定义输入字符串最大长度 in ...

  7. Unicode 码和汉字,十进制之间互转!二进制、十六进制,十进制的转换

    2019独角兽企业重金招聘Python工程师标准>>> Unicode 码和汉字,十进制之间互转!二进制.十六进制,十进制的转换 用法文档这里就不介绍了!直接上代码 package ...

  8. 十进制、二进制、十六进制转换

    十进制 进位规则:满十进一,用0.1.2.3.4.5.6.7.8.9来表示. 比如: 0,1,-,9 之后又是0,满十进一,也就是0,1,-,9,10,- 十进制是用0-9十个数码表示的数 二进制 二 ...

  9. 数的进制转换:十进制转二进制、十六进制转二进制、二进制转八进制

    一.十进制整数转其它进制(除基取余法) 十进制数转n进制就是用数不断除以n,直到最后得出的商为0,然后把得出的所有余数倒序排列即为结果. 例1:如下十进制数96转换为二进制数是1100000 例2:如 ...

最新文章

  1. 关于 iOS 10 中 ATS 的问题
  2. 开发日记-20190903 关键词 C程序gcc编译过程
  3. C++标准模板库(STL)的概念
  4. Maximal Continuous Rest
  5. java考题_Java考题知识点
  6. 华为电视鸿蒙系统好用吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  7. java nginx 例子_Java及nginx实现文件权限控制代码实例
  8. python 文本相似度_【机器学习】使用gensim 的 doc2vec 实现文本相似度检测
  9. Android开发笔记(一百六十五)利用红外发射遥控电器
  10. CES:IT大变革,软件的新平台与新机遇
  11. 使用WEPE一键安装系统
  12. 一套完整的后台管理系统
  13. 计算机本地网络如何共享,本地网络共享如何实现?
  14. Time_wait为什么是2MSL的时间长度?
  15. 《形式感+——网页视觉设计创意拓展与快速表现》
  16. Keil(MDK)下用仿真器烧程序的同时烧写附加数据到SPI FLASH
  17. 30系显卡能用服务器系统吗,买显卡吗 来看看适合自己的30系列显卡
  18. python 生成pdf 文字和图片_Python系列—PDF文本与图片抽取
  19. 论文撰写八大技巧与八大心得,一文读懂
  20. IntelliJ IDEA 快捷键及模板Templates设置

热门文章

  1. Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法
  2. 再接再厉!Alphabet将携手更多汽车厂商测试无人驾驶
  3. 资源组 —— 助你轻松解决单账户内的资源分组管理难题
  4. LNMP一键自动安装脚本
  5. c编程:求出4#215;4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和。...
  6. 关于php使用fputcsv进行大数据的导出
  7. 并发计算 VS 并行计算
  8. 2015 ACM Syrian Collegiate Programming Contest
  9. Linux—文件系统
  10. NIS认证管理域中的用户