hextoint.c |
#include <stdio.h> int power(int base, int n); int htoi(char s[]); main(){ char s[] = "0xA"; char m[] = "177"; char o[] = "77"; char g[] = "0xFF"; printf("%d\n", htoi(s)); printf("%d = 177\n", htoi(m)); printf("%d = 77\n", htoi(o)); printf("%d\n", htoi(g)); return 0; } int power(int base, int n){ if(n!=0){ int p, i; p = 1; for(i = 1; i<=n; ++i){ p = p * base; } return p; } else return 1; } int htoi(char s[]){ int length = strlen(s)-1; int start = 0; int add = 0; int value = 0; int i; if(s[1]=='x'||s[1]=='X'){ start = 2; } else start = 0; for(i=start; i<=length; ++i){ if(s[i]>='0'&&s[i]<='9'){ value = s[i]-'0'; } else if(s[i]>='a' && s[i]<='f'){ value = s[i]-'a'+10; } else if(s[i]>='A' && s[i]<='F'){ value = s[i]-'A'+10; } else { printf("Sorry: invalid input"); return 0; } add = add +(power(2, length-i)*value); } return add; } |
James Little |