• 3008阅读
  • 1回复

C语言版实现的16进制与字符串互转函数 [复制链接]

上一主题 下一主题
离线那个谁
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-12-31
字符串转换成16进制数:
  1. /*
  2. // C prototype : void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)
  3. // parameter(s): [OUT] pbDest - 输出缓冲区
  4. // [IN] pbSrc - 字符串
  5. // [IN] nLen - 16进制数的字节数(字符串的长度/2)
  6. // return value:
  7. // remarks : 将字符串转化为16进制数
  8. */
  9. void StrToHex(BYTE *pbDest, BYTE *pbSrc, int nLen)
  10. {
  11. char h1,h2;
  12. BYTE s1,s2;
  13. int i;
  14. for (i=0; i<nLen; i++)
  15. {
  16. h1 = pbSrc[2*i];
  17. h2 = pbSrc[2*i+1];
  18. s1 = toupper(h1) - 0x30;
  19. if (s1 > 9)
  20. s1 -= 7;
  21. s2 = toupper(h2) - 0x30;
  22. if (s2 > 9)
  23. s2 -= 7;
  24. pbDest[i] = s1*16 + s2;
  25. }
  26. }



16进制数转换成字符串:
  1. /*
  2. // C prototype : void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen)
  3. // parameter(s): [OUT] pbDest - 存放目标字符串
  4. // [IN] pbSrc - 输入16进制数的起始地址
  5. // [IN] nLen - 16进制数的字节数
  6. // return value:
  7. // remarks : 将16进制数转化为字符串
  8. */
  9. void HexToStr(BYTE *pbDest, BYTE *pbSrc, int nLen)
  10. {
  11. char ddl,ddh;
  12. int i;
  13. for (i=0; i<nLen; i++)
  14. {
  15. ddh = 48 + pbSrc[i] / 16;
  16. ddl = 48 + pbSrc[i] % 16;
  17. if (ddh > 57) ddh = ddh + 7;
  18. if (ddl > 57) ddl = ddl + 7;
  19. pbDest[i*2] = ddh;
  20. pbDest[i*2+1] = ddl;
  21. }
  22. pbDest[nLen*2] = '\0';
  23. }

离线myozc

只看该作者 沙发  发表于: 2014-05-01
用户被禁言,该主题自动屏蔽!
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个