码迷,mamicode.com
首页 > 其他好文 > 详细

将u_char *转换成char*类型的十六进制数据

时间:2015-12-04 06:37:26      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:linux c

在PF_RING安装包中摘取的代码,,感觉比较不错。自己注释的

char* etheraddr_string(const u_char *ep, char *buf) {

  u_int i, j;

  char *cp;


  cp = buf;

  if((j = *ep >> 4) != 0) //ep[0]的高4位赋给j, 转换成十六进制,赋给cp[0]

    *cp++ = hex[j];

  else

    *cp++ = ‘0‘;


  *cp++ = hex[*ep++ & 0xf];  //ep[0]的低4位转换成十六进制,赋给cp[1]


  for(i = 5; (int)--i >= 0;) {  //重复上述过程

    *cp++ = ‘:‘;

    if((j = *ep >> 4) != 0)

      *cp++ = hex[j];

    else

      *cp++ = ‘0‘;


    *cp++ = hex[*ep++ & 0xf];

  }


  *cp = ‘\0‘;

  return (buf);

}


将u_char *转换成char*类型的十六进制数据

标签:linux c

原文地址:http://yuzwei.blog.51cto.com/10126623/1719385

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!