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

测试效果

图1 结果图

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

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

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

以上是关于C++-bit转hex(四位二进制转十六进制)的主要内容,如果未能解决你的问题,请参考以下文章

hex文件转换成C语言

Python-十六进制与字符串转换脚本

Python-十六进制与字符串转换脚本

Python-十六进制与字符串转换脚本

python中十进制转成十六进制代码

二进制