标准ANSI C库函数备忘

来源:互联网 发布:sqlserver字符串拼接 编辑:程序博客网 时间:2024/04/19 11:30

读取16进制字符串函数:strtol

_CRTIMP long   __cdecl strtol(const char *, char **, int); // stdlib.h

 

void HexStrToBinary(BYTE* data, int buf_len, const char * hex_str)

{

       char * pHex = (char *)hex_str;

       BYTE * pBuf = data;

       int len = 0;

       while(pHex && pHex[0] && pHex[1] && (len++ < buf_len))

       {

              *pBuf++ = (char)strtol(pHex, &pHex, 16);

       }

       *pBuf = '/0';

}

 

void BinaryToHexStr(char * hex_str, const BYTE* data, int len)

{

       char * pHex = (char *)hex_str;

       const byte * pData = data;

       for (int i = 0; i < len; ++i)

       {

              sprintf(pHex, "%02x ", (byte)(*pData));

             

              pData ++;

              pHex += 3;

       }

       *pHex = '/0';

}

 

上述方法适合从文件里面读入一大串16进制字符串数据的转换,
如果数量很少而且是已知的,也可以这样转换:

上述方法适合从文件里面读入一大串16进制字符串数据的转换,
如果数量很少而且是已知的,也可以这样转换:

       char * pStr = "5E 34 7A";

       int n[3] = {0};

       sscanf(pStr, "%x %x %x", &n[0], &n[1], &n[2]);

 

_CRTIMP long   __cdecl strtol(const char *, char **, int); // stdlib.h

 

void HexStrToBinary(BYTE* data, int buf_len, const char * hex_str)

{

       char * pHex = (char *)hex_str;

       BYTE * pBuf = data;

       int len = 0;

       while(pHex && pHex[0] && pHex[1] && (len++ < buf_len))

       {

              *pBuf++ = (char)strtol(pHex, &pHex, 16);

       }

       *pBuf = '/0';

}

 

void BinaryToHexStr(char * hex_str, const BYTE* data, int len)

{

       char * pHex = (char *)hex_str;

       const byte * pData = data;

       for (int i = 0; i < len; ++i)

       {

              sprintf(pHex, "%02x ", (byte)(*pData));

             

              pData ++;

              pHex += 3;

       }

       *pHex = '/0';

}

 

上述方法适合从文件里面读入一大串16进制字符串数据的转换,
如果数量很少而且是已知的,也可以这样转换:

       char * pStr = "5E 34 7A";

       int n[3] = {0};

       sscanf(pStr, "%x %x %x", &n[0], &n[1], &n[2]);

 

原创粉丝点击