ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字符。標準ASCII 碼也叫基礎ASCII碼,使用7 位二進制數(剩下的1位二進制為0)來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字符。其中:
0~31及127(共33個)是控制字符或通信專用字符(其余為可顯示字符),如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BS(退格)、BEL(響鈴)等;通信專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;ASCII值為8、9、10 和13 分別轉換為退格、制表、換行和回車字符。它們并沒有特定的圖形顯示,但會依不同的應用程序,而對文本顯示有不同的影響。
32~126(共95個)是字符(32是空格),其中48~57為0到9十個阿拉伯數字。
65~90為26個大寫英文字母,97~122號為26個小寫英文字母,其余為一些標點符號、運算符號等。
同時還要注意,在標準ASCII中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。
后128個稱為擴展ASCII碼。許多基于x86的系統都支持使用擴展(或“高”)ASCII。擴展ASCII 碼允許將每個字符的第8 位用于確定附加的128 個特殊符號字符、外來語字母和圖形符號。
ASCII是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,并等同于國際標準ISO/IEC 646。
在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂,那么大家就必須使用相同的編碼規則,于是美國有關的標準化組織就出臺了ASCII編碼,統一規定了上述常用符號用哪些二進制數來表示。
美國標準信息交換代碼是由美國國家標準學會(American National Standard Institute , ANSI )制定的,標準的單字節字符編碼方案,用于基于文本的數據。起始于50年代后期,在1967年定案。它最初是美國國家標準,供不同計算機在相互通信時用作共同遵守的西文字符編碼標準,它已被國際標準化組織(International Organization for Standardization, ISO)定為國際標準,稱為ISO 646標準。適用于所有拉丁文字字母。
ASCII與16進制互轉c例程
//函數名:AscToHex()
//功能描述:把ASCII轉換為16進制
unsigned char AscToHex(unsigned char hex)
{
if((hex 》= 0) &&(hex 《= 9))
hex += 0x30;
else if((hex 》= 10) &&(hex 《= 15)) //A-F
hex += 0x41;//0x37
else
hex = 0xff;
return hex;
}
//函數名:HexToAsc()
//功能描述:把16進制轉換為ASCII
unsigned char HexToAsc(unsigned char aChar)
{
if((aChar》=0x30) &&(aChar《=0x39))
aChar -= 0x30;
else if((aChar》=0x41) && (aChar《=0x46))//大寫字母
aChar -= 0x41; //0x37
else if((aChar》=0x61) && (aChar《=0x66))//小寫字母
aChar -= 0x61; //0x57
else
aChar = 0xff;
return aChar;
}
十六進制與ASCII碼的互轉(C語言)
//函 數 名:CharToHex()
//功能描述:把ASCII字符轉換為16進制
//函數說明:
//調用函數:
//全局變量:
//輸 入:ASCII字符
//返 回:16進制
[cpp] view plain copy/**function: CharToHex()
*** ACSII change to 16 hex
*** input:ACSII
***Return :Hex
**/
unsigned char CharToHex(unsigned char bHex)
{
if((bHex》=0)&&(bHex《=9))
{
bHex += 0x30;
}
else if((bHex》=10)&&(bHex《=15))//Capital
{
bHex += 0x37;
}
else
{
bHex = 0xff;
}
return bHex;
}
//函 數 名:HexToChar()
//功能描述:把16進制轉換為ASCII字符
//函數說明: //調用函數:
//全局變量:
//輸 入:16進制
//返 回:ASCII字符
[cpp] view plain copyunsigned char HexToChar(unsigned char bChar)
{
if((bChar》=0x30)&&(bChar《=0x39))
{
bChar -= 0x30;
}
else if((bChar》=0x41)&&(bChar《=0x46)) // Capital
{
bChar -= 0x37;
}
else if((bChar》=0x61)&&(bChar《=0x66)) //littlecase
{
bChar -= 0x57;
}
else
{
bChar = 0xff;
}
return bChar;
}
scii碼轉十六進制原理
每一個ascii碼對應了一個固定的十六進制數,這個值是不變的,在ascii碼表上是可以查的到得。
下面是一張ASCII和16進制的對應表:
-
C語言
+關注
關注
180文章
7604瀏覽量
136685 -
ASCII
+關注
關注
5文章
172瀏覽量
35089 -
16進制
+關注
關注
1文章
13瀏覽量
8767
發布評論請先 登錄
相關推薦
評論