读《C程序设计语言》笔记6

时间:2022-12-28 20:36:09

《C程序设计语言》习题2-3

编写函数str_hextoint(s),把由十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9,a~f以及A~F。

#include<stdio.h>
#define YES 1
#define NO 0
int str_hextoint(char s[])
{
	int hexdigit, i, inhex, n;
	i=0;
	if(s[i]=='0')
	{
		++i;
		if(s[i]=='x' || s[i]=='X')
			++i;
	}
	n=0;
	inhex=YES;
	for(; inhex==YES; ++i)
	{
		if(s[i]>='0' && s[i]<='9')
			hexdigit=s[i]-'0';
		else if(s[i]>='a' && s[i]<='f')
			hexdigit=s[i]-'a'+10;
		else if(s[i]>='A' && s[i]<='F')
			hexdigit=s[i]-'A'+10;
		else
			inhex=NO;
		if(inhex==YES)
			n=16*n+hexdigit;
	}
	return n;
}

int main()
{
	char s[]={"0x2c"};
	int number;
	number=str_hextoint(s);
	printf("0x2c转换为整数型十进制数为:%d\n",number);
	system("pause");
	return 0;
}

执行结果如下:

读《C程序设计语言》笔记6

其实这个程序与我之前写的一个字符串转换为整型值是一样的解法的,只是这个是十六进制的,字符串处理起来稍微复杂了些。还是对字符数组的操作。

附之前字符串转换为整型值连接:http://www.cnblogs.com/wangzhiyu811/archive/2011/07/12/2104661.html