中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

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

這篇文章將為大家詳細講解有關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碼的相互轉換的詳細教程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

彭州市| 洛隆县| 塘沽区| 自治县| 尚志市| 孝昌县| 武陟县| 紫金县| 丹江口市| 涟源市| 社旗县| 芦溪县| 扎赉特旗| 万年县| 海原县| 化德县| 武川县| 砀山县| 当阳市| 临安市| 河南省| 嫩江县| 祁门县| 丰城市| 将乐县| 乌拉特中旗| 奎屯市| 五家渠市| 万源市| 石渠县| 泰安市| 运城市| 白朗县| 新郑市| 阳原县| 虞城县| 商都县| 新野县| 措勤县| 榆树市| 乐安县|