C++-bit转hex(四位二进制转十六进制)
Posted 翟天保Steven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++-bit转hex(四位二进制转十六进制)相关的知识,希望对你有一定的参考价值。
场景需求
经常会有将四位二进制的数据转化为十六进制的需求,比如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;
}
测试效果
如上图所示,输入多个4位二进制数据,不符合要求的返回空格‘ ’,result后面为最终输出结果。
如果函数有什么可以改进完善的地方,非常欢迎大家指出,一同进步何乐而不为呢~
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
以上是关于C++-bit转hex(四位二进制转十六进制)的主要内容,如果未能解决你的问题,请参考以下文章