C语言字符转换ASCII码

C语言字符转换ASCII码,第1张

#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 码-百度百科


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12297614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存