#include<stdio.h>
voidmain()
{
unsignedchara
printf("enterchar:")
scanf("%C",&a)
printf("ascii=%d",a)//强制转搭旁中化为ascii码
}
扩展资料:
在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一知山种方法,一般分奇校验启祥和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
参考资料来源:百度百科-ASCII
不知你要的是C语言的还是汇编的,都给你吧C语言的:
#include
<REG51.H>
typedef
unsigned
char
uchar
#define
NUMBER
10
uchar
BufferIn[NUMBER]={0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x1a,0x1b}//16进制数存放区
uchar
BufferOut[2*NUMBER]
//ASCII码存放区
////////////////////////////////////////////////////////////////
//功能:
将多字节16进制数漏悉转换为ASCII字符
//入口:
x:待转换16进制数,x>=0且x<=F
//出口:
返回转换完成后的ASCII码字符数据,返回0为失败
////////////////////////////////////////////////////////////////
uchar
GetASCII(uchar
x)
{
if(x>0x0f)
{
return
0
}
if(x>9)
{
return
('A'+x-10)
}
return
('0'+x)
}
////////////////////////////////////////////////////////////////
//主程序
////////////////////////////////////////////////////////////////
void
main()
{
uchar
i
for(i=0i<NUMBERi++)
{
BufferOut[i*2]
=
GetASCII(BufferIn[i]/0x10)
BufferOut[i*2+1]
=
GetASCII(BufferIn[i]%0x10)
}
while(1)
}
汇编的:
说明:
LOOP1循环为预设10个16进制数内容的初始化程序,作为示例
ORG
0000H
LJMP
START
ORG
0100H
START:
MOV
R2,
#10
预置10个16进制数
MOV
R0,
#20H
16进制数存放起始地址
MOV
A,
#12H
LOOP1:
MOV
@R0,
A
ADD
A,
#13H
INC
R0
DJNZ
R2,LOOP1
循环10次送10个数
以上至START为初始化内存,预送10个字节的数据
MOV
R0,
#20H
16进制数存放起始地址
MOV
R1,
#30H
ASCII数存放起始地址
MOV
R2,
#10
转换10个字节
LCALL
HEXTOASC
调用转换子程樱敏序
JMP
$
=======================================================
HEXTOASC:将多字节16进制数转换为ASCII字符子程序
入口:
(R0)=16进制数存放返颂乎起始地址指针
(R2)=字节数
出口:
(R1)=转换完成后的ASC字符存放起始地址指针
算法说明:0~9:(ASCII码为30H~39H)+90H后调整后无变化,结果
为9xH,再加40H为0DxH,调整 *** 作+60H后正好为3xH
A~F:(ASCII为41H~46H),+90H后为9xH,调整 *** 作+06H后
为01H~06H,再加40H调整后不变,正好为41H~46H
=======================================================
HEXTOASC:
MOV
A,
@R0
SWAP
A
ANL
A,
#0FH
处理高4位
ADD
A,
#90H
DA
A
ADDC
A,
#40H
DA
A
MOV
@R1,
A
保存高4位
INC
R1
MOV
A,
@R0
ANL
A,
#0FH
处理低4位
ADD
A,
#90H
DA
A
ADDC
A,
#40H
DA
A
MOV
@R1,
A
保存低4位
INC
R1
下一个16进制数
INC
R0
DJNZ
R2,
HEXTOASC
RET
END
任务代码为:
#include<stdio.h>
main()
{
char w
printf("请输入一个字母:")
scanf("%c",&w)
printf("与这个字母对应的ASCII码是:%d\n",w)
}
英文字母是字符型,ASCII码十进制的,因此只需要将字符型转换为十进制,在输出函数的时候强制转换类型。
扩展资料:
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 码-百度百科
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)