Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #include <stdlib.h>
- #include <string.h>
- int power(int base, int p)
- {
- int result = 1;
- while(p != 0)
- {
- result *= base;
- p--;
- }
- return result;
- }
- int htoi(char *hex)
- {
- int i = 0;
- while (hex[i] != '\0')
- i++;
- i--;
- int dec = 0;
- int degree = 0;
- while(i >= 0 && hex[i] != 'x' && hex[i] != 'X')
- {
- if (isdigit(hex[i]))
- dec += (hex[i] - '0') * power(16, degree);
- else
- {
- if (hex[i] == 'a' || hex[i] == 'A')
- dec += (10) * power(16, degree);
- else if (hex[i] == 'b' || hex[i] == 'B')
- dec += (11) * power(16, degree);
- else if (hex[i] == 'c' || hex[i] == 'C')
- dec += (12) * power(16, degree);
- else if (hex[i] == 'd' || hex[i] == 'D')
- dec += (13) * power(16, degree);
- else if (hex[i] == 'e' || hex[i] == 'E')
- dec += (14) * power(16, degree);
- else if (hex[i] == 'f' || hex[i] == 'F')
- dec += (15) * power(16, degree);
- }
- i--;
- degree++;
- }
- return dec;
- }
- int main(void)
- {
- char *hex = malloc(sizeof(char) * 256);
- strcpy(hex, "0XAB");
- printf("%s in hex is %i in dec\n", hex, htoi(hex));
- strcpy(hex, "0xab");
- printf("%s in hex is %i in dec\n", hex, htoi(hex));
- strcpy(hex, "ab");
- printf("%s in hex is %i in dec\n", hex, htoi(hex));
- strcpy(hex, "BBB");
- printf("%s in hex is %i in dec\n", hex, htoi(hex));
- strcpy(hex, "CCC");
- printf("%s in hex is %i in dec\n", hex, htoi(hex));
- strcpy(hex, "F23F");
- printf("%s in hex is %i in dec\n", hex, htoi(hex));
- free(hex);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement