C语言字符转换ASCII码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言字符转换ASCII码相关的知识,希望对你有一定的参考价值。

有没有哪位高手能详细说明下,不用PRINTF这个函数,重点是要用自己的写的函数能完成这个功能吗。
谢谢高手给予详解,本人菜鸟,请给出代码。

#include<stdio.h>

voidmain()


unsignedchara;

printf("enterchar:");

scanf("%C",&a);

printf("ascii=%d",a);//强制转化为ascii码


扩展资料:

在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

参考资料来源:百度百科-ASCII

参考技术A

1、首先需要打开自己的终端窗口,如下图所示。

2、接下来需要利用vim创建一个c程序,如下图所示。

3、接下来需要编写自己所需要的程序,如下图所示。

4、最后在自己的程序中就可以看到字符转成ASCII了,如下图所示。

参考技术B //函 数 名:CharToHex()
//功能描述:把ASCII字符转换为16进制
//函数说明:
//调用函数:
//全局变量:
//输 入:ASCII字符
//返 回:16进制
/////////////////////////////////////////////////////////////////////
unsigned char CharToHex(unsigned char bHex)
if((bHex>=0)&&(bHex<=9))
bHex += 0x30;
else if((bHex>=10)&&(bHex<=15))//大写字母
bHex += 0x37;
else bHex = 0xff;
return bHex;

/////////////////////////////////////////////////////////////////////
//函 数 名:HexToChar()
//功能描述:把16进制转换为ASCII字符
//函数说明:
//调用函数:
//全局变量:
//输 入:16进制
//返 回:ASCII字符
/////////////////////////////////////////////////////////////////////
unsigned char HexToChar(unsigned char bChar)
if((bChar>=0x30)&&(bChar<=0x39))
bChar -= 0x30;
else if((bChar>=0x41)&&(bChar<=0x46))//大写字母
bChar -= 0x37;
else if((bChar>=0x61)&&(bChar<=0x66))//小写字母
bChar -= 0x57;
else bChar = 0xff;
return bChar;本回答被提问者采纳
参考技术C C语言中,字符和其ASCII码是等价的,比如'A'这个字符和单字节整数65是等价的.
比如char c='A';int a=c;的话,a就是65
参考技术D ASCII字符值范围是0x00到0x7f。因为有不可见和键盘不好拍的字符。所以你可用整型数输入。
unsigned
char
a[100],b[100];
unsigned
char
x,y,z;
scanf("%d",&a[i]);
if
(a[i]
>
0x7f
||
a[i]
<
0)
重输;
加减运算
就用算数表达式。例如
y
=
a[1]+a[2];
b[2]
=
a[1]
+
a[2]
-
a[3];
unsigned
char
就是8bit无符号整数。
加减运算后很可能超界,即大于0x7f或小于0。
加减运算后的字符很可能是不可打印字符,或“看不见”的字符。
所以你的题目有问题。

c语言中如何将一个字符ascii码转换为整型数

#include"stdio.h"
#include"string.h"
main()

int i,s;
int num[80];
char str[80],ch[80];
i=0;
s=0;
printf("input a string:");
gets(str);
while(str[i]!='\n')

i++;

str[i]='\0';
for(i=0;i<80;i++)
if(str[i]>='0'&&str[i]<='9')

ch[i]=str[i]-'0';
num[i]=ch[i];
s=s*10+num[i];

printf("%d",s);
printf("\n");
getch();

c语言中,字符ascll码是通过控制其输出格式来把它转化为整型数的,格式控制中"%c",就是将其以字符形式输出,而直接改成"%d",就可以将其转换为整型数。

ASCII码,英文全称:American Standard Code for Information Interchange,是美国信息交换标准代码是一种用于信息交换的美国标准代码。7位字符集广泛用于代表标准美国键盘上的字符或符号。通过将这些字符使用的值标准化,ASCII允许计算机和计算机程序交换信息。ASCII字符集是与ANSI字符集中的前面128个(0-127)字符相同。

美国信息交换标准代码ASCII为"美国信息交换标准代码"十个字对应英文的缩写,ASCII文件是简单的无格式文本文件,可以由任何计算机所识别,Windows中的记事本及任何文字处理程序都可以阅读及创建ASCII文件。ASCII文件通常都具有扩展名.TXT(例如README.TXT)

在计算机中,所有的数据在存储和运算时都要使用二进制数表示,同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的美国信息交换标准码,统一规定了上述常用符号用哪个二进制数来表示。
参考技术A 删掉ch[i]这个步骤就可以了
ch[i]=str[i]-'0';
num[i]=ch[i];
s=s*10+num[i];
改成
num[i]=str[i]-'0';
s=s*10+num[i];
参考技术B str[i]-'0'这不就转了吗,直接减去'0'(字符)追问

可是运行结果有错啊?

追答

你那是赋值错误,你把整数赋值给了ch[i],你直接打印出来str[i]-'0'看看

参考技术C while(str[i]!='\n')
这里改成 while(str[i]!='\0')
参考技术D for循环的错误,不能让他加到80.i<strlen(str);并且gets的用法也有错误,它会直接加‘\0’,不用自己加吧
你的程序写的有点繁琐

#include"stdio.h"
#include"string.h"
main()

int i,s;
char str[80];
i=0;
s=0;
printf("input a string:");
gets(str);

for(i=0;i<strlen(str);i++)
if(str[i]>='0'&&str[i]<='9')


s=s*10+str[i]-'0';

printf("%d",s);
printf("\n");
getchar();
本回答被提问者采纳

以上是关于C语言字符转换ASCII码的主要内容,如果未能解决你的问题,请参考以下文章

C语言,ASCII码怎么转换为字符?

ASCII码字符对照表

任意十进制数转换成ASCII码C语言程序

C语言ASCII码与字母如何转换?求详解

c语言字符与ASCII码的转换

C语言字符转换ASCII码