C++如何實(shí)現(xiàn)BCD碼和ASCII碼的相互轉(zhuǎn)換
BCD
即BCD代碼。Binary-Coded Decimal,簡(jiǎn)稱BCD,稱BCD碼或二-十進(jìn)制代碼,亦稱二進(jìn)碼十進(jìn)數(shù)。是一種二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的十進(jìn)制代碼。這種編碼形式利用了四個(gè)位元來(lái)儲(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ì)很長(zhǎng)的數(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,美國(guó)信息交換標(biāo)準(zhǔn)代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語(yǔ)和其他西歐語(yǔ)言。它是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng),并等同于國(guó)際標(biāo)準(zhǔn)ISO/IEC 646。
下面通過(guò)代碼給大家介紹下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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c/c++ 標(biāo)準(zhǔn)庫(kù) bind 函數(shù)詳解
bind是一組用于函數(shù)綁定的模板。在對(duì)某個(gè)函數(shù)進(jìn)行綁定時(shí),可以指定部分參數(shù)或全部參數(shù),也可以不指定任何參數(shù),還可以調(diào)整各個(gè)參數(shù)間的順序。這篇文章主要介紹了c/c++ 標(biāo)準(zhǔn)庫(kù) bind 函數(shù) ,需要的朋友可以參考下2018-09-09C字符串操作函數(shù)的實(shí)現(xiàn)詳細(xì)解析
以下是對(duì)C語(yǔ)言中字符串操作函數(shù)的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08C/C++程序開(kāi)發(fā)中實(shí)現(xiàn)信息隱藏的三種類型
這篇文章主要介紹了C/C++程序開(kāi)發(fā)中實(shí)現(xiàn)信息隱藏的三種類型的相關(guān)資料,需要的朋友可以參考下2016-02-02原碼, 反碼與補(bǔ)碼基礎(chǔ)知識(shí)詳細(xì)介紹
這篇文章講解了計(jì)算機(jī)的原碼, 反碼和補(bǔ)碼. 并且進(jìn)行了深入探求了為何要使用反碼和補(bǔ)碼, 以及更進(jìn)一步的論證了為何可以用反碼, 補(bǔ)碼的加法計(jì)算原碼的減法,需要的朋友可以參考下2016-12-12opencv3/C++視頻中疊加透明圖片的實(shí)現(xiàn)
今天小編就為大家分享一篇opencv3/C++視頻中疊加透明圖片的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12