Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1526085
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: C/C++

2012-04-10 21:29:46


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int ctoh(char * str)
  5. {
  6.     unsigned long var = 0;
  7.     unsigned long t;
  8.     char * tmp,* tmp_head;
  9.     int i,len;

  10.     len = strlen(str);
  11.     tmp = malloc(len + 1);

  12.     tmp_head = tmp;

  13.     if (len > 8) //最长8位
  14.     {
  15.         free(tmp);
  16.         return -1;
  17.     }

  18.     for (i = 0;*str;i++)
  19.     {
  20.         tmp[i] = toupper(*str++);//统一大写
  21.     }
  22.     tmp[i] = '\0';
  23.     printf("str %s tmp %s\n",str,tmp);

  24.     for (; *tmp != '\0'; tmp++)
  25.     {
  26.         if (*tmp >='A' && *tmp <='F')
  27.             t = *tmp-55;    //a-f之间的ascii与对应数值相差55如'A'为65,65-55即为A
  28.         else
  29.             t = *tmp-48;    //字符0-9 之间的ascii与对应数值相差为48;
  30.         var <<= 4;
  31.         var |= t;
  32.      }

  33.     free(tmp_head);

  34.     return var;
  35. }


  36. int main(void)
  37. {
  38.     int id;
  39.     char * test = "1a";
  40.     char * test1 = "11";
  41.     
  42.     id = atoi(test1);  //只能适用于0-9的数字
  43.     printf("%d \n",id);

  44.     id = ctoh(test);
  45.     printf(" test %s, 0x%x \n",test,id);


  46.     return 0;
  47. }

阅读(754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~