C++如何實(shí)現(xiàn)BCD碼和ASCII碼的相互轉(zhuǎn)換
BCD
即BCD代碼。Binary-Coded Decimal,簡稱BCD,稱BCD碼或二-十進(jìn)制代碼,亦稱二進(jìn)碼十進(jìn)數(shù)。是一種二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的十進(jìn)制代碼。這種編碼形式利用了四個(gè)位元來儲(chǔ)存一個(gè)十進(jìn)制的數(shù)碼,使二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換得以快捷的進(jìn)行。這種編碼技巧,最常用于會(huì)計(jì)系統(tǒng)的設(shè)計(jì)里,因?yàn)闀?huì)計(jì)制度經(jīng)常需要對(duì)很長的數(shù)字串作準(zhǔn)確的計(jì)算。相對(duì)于一般的浮點(diǎn)式記數(shù)法,采用BCD碼,既可保存數(shù)值的精確度,又可免卻使電腦作浮點(diǎn)運(yùn)算時(shí)所耗費(fèi)的時(shí)間。此外,對(duì)于其他需要高精確度的計(jì)算,BCD編碼亦很常用。
ASCII
ASCII(American Standard Code for Information Interchange,美國信息交換標(biāo)準(zhǔn)代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語和其他西歐語言。它是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng),并等同于國際標(biāo)準(zhǔn)ISO/IEC 646。
下面通過代碼給大家介紹下C++如何實(shí)現(xiàn)BCD碼和ASCII碼的相互轉(zhuǎn)換,具體代碼如下所示:
#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轉(zhuǎn)ASCII
for (int i = 0; i < str1.length(); i++)
{
cout << str1[i];
}
cout << endl;
string str2 = ASCII2BCD(str1); //ASCII轉(zhuǎn)BCD
for (int i = 0; i < str2.length(); i++)
{
cout << str2[i];
}
cout << endl;
return 0;
}
運(yùn)行效果如下:

總結(jié)
到此這篇關(guān)于C++如何實(shí)現(xiàn)BCD碼和ASCII碼互轉(zhuǎn)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)BCD碼和ASCII碼互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言編寫基于TCP和UDP協(xié)議的Socket通信程序示例
這篇文章主要介紹了C語言編寫基于TCP和UDP協(xié)議的Socket通信程序示例,其中TCP的客戶端與服務(wù)器端采用多線程實(shí)現(xiàn),需要的朋友可以參考下2016-03-03
C語言深入分析遞歸函數(shù)的實(shí)現(xiàn)
遞歸(recursive)函數(shù)是“自己調(diào)用自己”的函數(shù),無論是采用直接或間接調(diào)用方式。間接遞歸意味著函數(shù)調(diào)用另一個(gè)函數(shù)(然后可能又調(diào)用第三個(gè)函數(shù)等),最后又調(diào)用第一個(gè)函數(shù)。因?yàn)楹瘮?shù)不可以一直不停地調(diào)用自己,所以遞歸函數(shù)一定具備結(jié)束條件2022-04-04
詳解MFC/C++調(diào)用易語言的整數(shù)型和文本型與VS2010互動(dòng)
在本篇文章里我們給大家分享了MFC/C++調(diào)用易語言的整數(shù)型和文本型與VS2010互動(dòng)相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。2018-11-11
C++中的運(yùn)算符和運(yùn)算符優(yōu)先級(jí)總結(jié)
這篇文章主要介紹了C++中的運(yùn)算符和運(yùn)算符優(yōu)先級(jí)總結(jié),主要整理了算術(shù)、關(guān)系、邏輯、位和賦值運(yùn)算符的用法,需要的朋友可以參考下2016-05-05
C++ 使用VS Code運(yùn)行程序時(shí)終端輸出中文亂碼的解決辦法
這篇文章主要介紹了C++ 使用VS Code運(yùn)行程序時(shí)終端輸出中文亂碼的解決辦法 ,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
C語言初識(shí)動(dòng)態(tài)內(nèi)存管理malloc calloc realloc free函數(shù)
動(dòng)態(tài)內(nèi)存是相對(duì)靜態(tài)內(nèi)存而言的。所謂動(dòng)態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存2022-03-03

