Guest User

Untitled

a guest
Jul 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int htoi(char const *s)
  6. {
  7. int len;
  8. int i;
  9. int n;
  10. int iter = 0;
  11. int ret = 0;
  12.  
  13. len = strlen(s);
  14.  
  15. do {
  16. if ((*s == '0' && *(s+1) == 'x') ||
  17. (*s == '0' && *(s+1) == 'X')) {
  18. /* Skip the 0x or 0X */
  19. s++;
  20. len -= 2;
  21. continue;
  22. }
  23.  
  24. switch (*s) {
  25. case '0':
  26. case '1':
  27. case '2':
  28. case '3':
  29. case '4':
  30. case '5':
  31. case '6':
  32. case '7':
  33. case '8':
  34. case '9':
  35. n = *s - 0x30;
  36. break;
  37. case 'a':
  38. case 'b':
  39. case 'c':
  40. case 'd':
  41. case 'e':
  42. case 'f':
  43. n = *s - 0x57;
  44. break;
  45. case 'A':
  46. case 'B':
  47. case 'C':
  48. case 'D':
  49. case 'E':
  50. case 'F':
  51. n = *s - 0x37;
  52. break;
  53. default:
  54. break;
  55. }
  56. for (i = len; i > iter; i--) {
  57. n = n * 16;
  58. }
  59. ret += n;
  60. } while (iter++, *++s);
  61.  
  62. return ret;
  63. }
  64.  
  65. int main(int argc, char const* argv[])
  66. {
  67. int x;
  68.  
  69. if (argc < 2) {
  70. printf("usage: htoi [0xffff]\n");
  71. exit(-1);
  72. }
  73.  
  74. x = htoi(argv[1]);
  75. printf("%#x\n", x);
  76. return 0;
  77. }
Add Comment
Please, Sign In to add comment