溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++實現BCD碼和ASCII碼的相互轉換的詳細教程

發(fā)布時間:2020-06-23 11:13:48 來源:億速云 閱讀:883 作者:清晨 欄目:編程語言

這篇文章將為大家詳細講解有關C++實現BCD碼和ASCII碼的相互轉換的詳細教程,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

BCD 

即BCD代碼。Binary-Coded Decimal‎,簡稱BCD,稱BCD碼或二-十進制代碼,亦稱二進碼十進數。是一種二進制的數字編碼形式,用二進制編碼的十進制代碼。這種編碼形式利用了四個位元來儲存一個十進制的數碼,使二進制和十進制之間的轉換得以快捷的進行。這種編碼技巧,最常用于會計系統(tǒng)的設計里,因為會計制度經常需要對很長的數字串作準確的計算。相對于一般的浮點式記數法,采用BCD碼,既可保存數值的精確度,又可免卻使電腦作浮點運算時所耗費的時間。此外,對于其他需要高精確度的計算,BCD編碼亦很常用。

ASCII

ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節(jié)編碼系統(tǒng),并等同于國際標準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碼的相互轉換的詳細教程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI