美文网首页
十六进制字符串转换为字节数组

十六进制字符串转换为字节数组

作者: 守拙圆 | 来源:发表于2017-09-07 09:14 被阅读7次

由于协议转换,相邻协议所支持的数据类型存在差异,故存在数据类型转换的问题,如一个十六字节字符串“AD1D3DF4D5”需要转换为其表示的字节数组。

#include <stdio.h>
#include <string.h>
static void hexStr2Bytes(unsigned char *src, unsigned char *out)
{
        int m = 0, n =0;
        int len = strlen(src) / 2;
        int i = 0;
        for(i = 0; i < len; i++)
        {
                unsigned char m, n;
                if(src[2*i] >= 'A' && src[2*i] <= 'F')
                        m = src[2*i] - 'A' + 10;
                else // if(src[i] >= '0' && src[i] <= '9')
                        m = src[2*i] - '0';

                if(src[2 *i + 1] >= 'A' && src[2*i + 1] <= 'F')
                        n = src[2*i + 1] - 'A' + 10;
                else
                        n = src[2*i + 1] - '0' ;
                out[i] = (m << 4) | n;
        }
        printf("\n");
        int j = 0;
        while( j < len)
        {
          printf("%X", out[j]);
          j++;
        }
         printf("\n");
}

其输出结果:AD1D3DF4D5     

注意:由于此处输入一般是有程序自从产生,非手工输入,此函数中未考虑字符串中存在无效字符、小写字符和奇数个字符等异常情况。


版权声明:自由转载-非商用-非衍生-保持署名创意共享3.0许可证

相关文章

网友评论

      本文标题:十六进制字符串转换为字节数组

      本文链接:https://www.haomeiwen.com/subject/obbbjxtx.html