C++如何实现BCD码和ASCII码的相互转换分享!

BCD 

即BCD代码。Binary-Coded Decimal‎,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

ASCII

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

下面通过代码给大家介绍下C++如何实现BCD码和ASCII码的相互转换,具体代码如下所示:

  #include<iostream>  #include<stdlib.h>  #include<string>  using namespace std;    string ASCII2BCD(const string &str)  {  	string	res;  	size_t	nBegin = 0;  	int	nTemp;  	char	szBuf[16] = { 0 };  	if (str.size() % 2 != 0)  	{  		szBuf[0] = '0';  		szBuf[1] = str[0];  		sscanf(szBuf, "%x", &nTemp);  		nBegin = 1;  		res.push_back((char)nTemp);  	}  	for (; nBegin < str.size(); nBegin += 2)  	{  		szBuf[0] = str[nBegin];  		szBuf[1] = str[nBegin + 1];  		sscanf(szBuf, "%x", &nTemp);  		res.push_back((char)nTemp);  	}  	return res;  }    string	BCD2ASCII(const string &str)  {  	string res;  	for (size_t i = 0; i < str.size(); i++)  	{  		char temp = (str[i] >> 4) & 0x0F;  		if (temp >= 10)  			res.push_back('A' + temp - 10);  		else  			res.push_back('0' + temp);  		temp = str[i] & 0x0F;  		if (temp >= 10)  			res.push_back('A' + temp - 10);  		else  			res.push_back('0' + temp);  	}  	return res;  }    int main()  {  	string str1 = BCD2ASCII("王通"); //BCD转ASCII  	for (int i = 0; i < str1.length(); i++)  	{  		cout << str1[i];  	}  	cout << endl;    	string str2 = ASCII2BCD(str1); //ASCII转BCD    	for (int i = 0; i < str2.length(); i++)  	{  		cout << str2[i];  	}  	cout << endl;  	return 0;  }

运行效果如下:

C++如何实现BCD码和ASCII码的相互转换

总结

到此这篇关于C++如何实现BCD码和ASCII码互转的文章就介绍到这了,更多相关C++实现BCD码和ASCII码互转内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

—-想了解C++如何实现BCD码和ASCII码的相互转换分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/485051.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐