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语言编写基于TCP和UDP协议的Socket通信程序示例

    C语言编写基于TCP和UDP协议的Socket通信程序示例

    这篇文章主要介绍了C语言编写基于TCP和UDP协议的Socket通信程序示例,其中TCP的客户端与服务器端采用多线程实现,需要的朋友可以参考下
    2016-03-03
  • C语言深入分析递归函数的实现

    C语言深入分析递归函数的实现

    递归(recursive)函数是“自己调用自己”的函数,无论是采用直接或间接调用方式。间接递归意味着函数调用另一个函数(然后可能又调用第三个函数等),最后又调用第一个函数。因为函数不可以一直不停地调用自己,所以递归函数一定具备结束条件
    2022-04-04
  • C语言在输入输出时遇到的常见问题总结

    C语言在输入输出时遇到的常见问题总结

    大家在平时的做题中是否会遇到和我一样的烦恼,题目的代码已经基本完成,但是在输出时候,总是和题目给出的样例输出格式不同 ,导致题目不能通过。为了解决这一烦恼,我总结了以下几点,需要的可以参考一下
    2022-09-09
  • 详解MFC/C++调用易语言的整数型和文本型与VS2010互动

    详解MFC/C++调用易语言的整数型和文本型与VS2010互动

    在本篇文章里我们给大家分享了MFC/C++调用易语言的整数型和文本型与VS2010互动相关知识点内容,有兴趣的朋友们可以参考下。
    2018-11-11
  • C语言的数组指针与函数指针详解

    C语言的数组指针与函数指针详解

    这篇文章主要为大家详细介绍了C语言的数组指针与函数指针,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 如何高效移除C++关联容器中的元素

    如何高效移除C++关联容器中的元素

    关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C++关联容器中的元素的方法,需要的朋友可以参考下
    2025-04-04
  • C++中的运算符和运算符优先级总结

    C++中的运算符和运算符优先级总结

    这篇文章主要介绍了C++中的运算符和运算符优先级总结,主要整理了算术、关系、逻辑、位和赋值运算符的用法,需要的朋友可以参考下
    2016-05-05
  • C++ Boost.Signals2信号/槽概念

    C++ Boost.Signals2信号/槽概念

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-12-12
  • C++ 使用VS Code运行程序时终端输出中文乱码的解决办法

    C++ 使用VS Code运行程序时终端输出中文乱码的解决办法

    这篇文章主要介绍了C++ 使用VS Code运行程序时终端输出中文乱码的解决办法 ,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • C语言初识动态内存管理malloc calloc realloc free函数

    C语言初识动态内存管理malloc calloc realloc free函数

    动态内存是相对静态内存而言的。所谓动态和静态就是指内存的分配方式。动态内存是指在堆上分配的内存,而静态内存是指在栈上分配的内存
    2022-03-03

最新评论