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

 更新时间:2020年06月12日 11:43:12   作者:再璇  
这篇文章主要介绍了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语言实现与电脑玩剪刀石头布游戏

    C语言实现与电脑玩剪刀石头布游戏

    这篇文章主要为大家详细介绍了如何通过C语言实现和电脑玩剪刀石头布游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-11-11
  • 平衡二叉树AVL操作模板

    平衡二叉树AVL操作模板

    这篇文章主要介绍了平衡二叉树AVL操作模板,需要的朋友可以参考下
    2014-02-02
  • Java C++ 算法题解leetcode1582二进制矩阵特殊位置

    Java C++ 算法题解leetcode1582二进制矩阵特殊位置

    这篇文章主要为大家介绍了Java C++ 算法题解leetcode1582二进制矩阵特殊位置示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • C语言中一些将字符串转换为数字的函数小结

    C语言中一些将字符串转换为数字的函数小结

    这篇文章主要介绍了C语言中一些将字符串转换为数字的函数小结,分别为atoi()函数和atol()函数以及atof()函数,需要的朋友可以参考下
    2015-08-08
  • C++浅析类与对象的基础

    C++浅析类与对象的基础

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-05-05
  • C语言socket编程开发应用示例

    C语言socket编程开发应用示例

    这篇文章主要介绍了C语言socket编程开发应用,示例简单,大家参考使用吧
    2013-12-12
  • 详谈浮点精度(float、double)运算不精确的原因

    详谈浮点精度(float、double)运算不精确的原因

    这篇文章主要介绍了详谈浮点精度(float、double)运算不精确的原因,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 在Vitis IDE中如何使用第三方库 libtiff 保存 tiff 文件

    在Vitis IDE中如何使用第三方库 libtiff 保存 tiff 文件

    这篇文章主要介绍了在Vitis IDE中如何使用第三方库 libtiff 保存 tiff 文件,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • C++多线程获取返回值方法详解

    C++多线程获取返回值方法详解

    这篇文章主要介绍了C++多线程获取返回值方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 详解C++中stoi/stol/stoll函数的用法

    详解C++中stoi/stol/stoll函数的用法

    这篇文章主要为大家详细介绍了C++中stoi、stol、stoll函数的具体用法,文中的示例代码讲解详细,对我们学校C++有一点的帮助,需要的可以参考一下
    2023-03-03

最新评论