c语言十六进制字符转化成十进制数字问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言十六进制字符转化成十进制数字问题相关的知识,希望对你有一定的参考价值。

(少于80 个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
【输入形式】
输入一个以回车结束的字符串
【输入输出样例1】(下划线部分表示输入)
Input a string: 10
Hex=16

我自己是这样写的
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(void)

int i,j,k=0;
char str[80];

printf("Input a string: ");
gets(str);

for(i=0;i<80;i++)
if(str[i]>'f' || str[i]>'F')
for(j=i;j<80;j++)
str[j]=str[j+1];



j=strlen(str);
for(i=0;i<80;i++)
if(str[i]>='a' || str[i]>='A')

k=k+(str[i]-'a'+10)*pow(10,j-i-1);
else
k=k+(str[i]-'0')*pow(10,j-i-1);


printf("Hex=%d",k);
return 0;

结果不对,请问字母abc等怎么转化成数字,我写的程序要怎么改?

我帮你重写了。。。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<math.h>

int convert(char a) 
if (a >= '0' && a <= '9') 
return a - '0';
 else if (a >= 'A' && a <= 'F') 
return a - 'A' + 10;
 else if (a >= 'a' && a <= 'f') 
return a - 'a' + 10;
 else 
return -1;



int main(void)

int i, j, k = 0;
char str[80];
char *p;
printf("Input a string: ");
gets(str);
p = str;
while (*p) 
i = convert(*p);
if (i >= 0) 
k = k * 16 + i;

p++;

printf("Hex=%d\\n", k);
return 0;

参考技术A #include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
int main(void)

char c;
long result = 0;
printf("Input a string: ");
while ((c = getchar()) != '\n')

if (!isxdigit(c))
break;
result*=16;
if (isdigit(c))
result+=c-'0';
else
result+=tolower(c)-'a'+10;

printf("Hex=%d\n",result);

c语言中如何将字符串转化成整数型并输出?

参考技术A

c语言中,可以使用atoi()函数将字符串转化成整数型并输出。

atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。

如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1。

扩展资料:

C语言常用函数:

1、int abs(int i)

返回整型参数i的绝对值。

2、double cabs(struct complex znum)

返回复数znum的绝对值。

3、double fabs(double x)

返回双精度参数x的绝对值。

4、long labs(long n)

返回长整型参数n的绝对值。

5、double exp(double x)

返回指数函数ex的值。

6、double frexp(double value,int *eptr)

返回value=x*2n中x的值,n存贮在eptr中。

7、double ldexp(double value,int exp)

返回value*2exp的值。

8、double log(double x)

返回logex的值。

9、double log10(double x)

返回log10x的值。

10、double pow(double x,double y)

返回x^y的值。

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

以上是关于c语言十六进制字符转化成十进制数字问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言 字符串转数字 急急急

c语言输入数字转换成2进制字符串原理

怎样用C语言将字符转化成十六进制整数

16进制字符串如何转化16进制数值

C语言如何把11位16进制字符串转成16进制数?

C语言程序,怎么把16进制转成字符: