ascii转换16进制原理

电子说

1.3w人已加入

描述

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进制的对应表:

16进制

16进制

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分