十六进制数组转换成ASCII码

举报
心跳包 发表于 2021/11/12 23:22:34 2021/11/12
【摘要】 #include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h> #define HEX2ASC(a) ((((a)&0xF)>9)?((a)&0xF)-10+'a':((a)...

  
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <strings.h>
  5. #define HEX2ASC(a) ((((a)&0xF)>9)?((a)&0xF)-10+'a':((a)&0xF)+'0')
  6. static void char_array_2_ascii(char *src,size_t src_len,char *str,size_t str_size){
  7. size_t i;
  8. if(str_size < 2*src_len+1)return;
  9. for(i=0;i<src_len;i++){
  10. *(str+2*i)=HEX2ASC(*(src+i)>>4);
  11. *(str+2*i+1)=HEX2ASC(*(src+i)&0xF);
  12. }
  13. *(str+2*i)='\0';
  14. }
  15. int main()
  16. {
  17. unsigned char buf[]={0x32,0x33,0x34,0x45};
  18. char string[50];
  19. char_array_2_ascii((char *)buf,sizeof(buf),string,50);
  20. printf("%s\r\n",string);
  21. }

打印:32333445

文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。

原文链接:xintiaobao.blog.csdn.net/article/details/102679474

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。