hex2str str2hex互转

/**************************************************
  *函数名称 HEX2BIN
  *功能描述 十六进制串转BIN串
  *返回值    转换后整数值
  *************************************************/
uint8 HEX2BIN(uint8 * p_hexstr, uint8 * p_binstr)
{
    uint bin_len = 0;
    uint hex_len = strlen((char *)p_hexstr);
    uint index = 0;

    if (hex_len % 2 == 1)
    {
        hex_len -= 1;
    }

    bin_len = hex_len / 2;

    for(index = 0; index < hex_len; index+=2)
    {
        p_binstr[index/2] = ((HEX2BYTE(p_hexstr[index]) << 4) & 0xF0) + HEX2BYTE(p_hexstr[index + 1]);
    }

    return bin_len;
}

/**************************************************
  *函数名称 HEX2BYTE
  *功能描述 单个十六进制字符转其对应的数值
  *返回值    转换后整数值
  *************************************************/
uint HEX2BYTE(uint8 hex_ch)
{
    if (hex_ch >= '0' && hex_ch <= '9')
    {
        return hex_ch - '0';
    }

    if (hex_ch >= 'a' && hex_ch <= 'f')
    {
        return hex_ch - 'a' + 10;
    }

    if (hex_ch >= 'A' && hex_ch <= 'F')
    {
        return hex_ch - 'A' + 10;
    }

    return 0x00;
}

 

 




#ifndef MIN
#define MIN(a,b)            (((a) < (b)) ? (a) : (b))
#endif

#ifndef MAX
#define MAX(a,b)            (((a) < (b)) ? (b) : (a))
#endif


#define BETWEEN(VAL, vmin, vmax) ((VAL) >= (vmin) && (VAL) <= (vmax))
#define ISHEXCHAR(VAL) (BETWEEN(VAL, '0', '9') || BETWEEN(VAL, 'A', 'F') || BETWEEN(VAL, 'a', 'f'))



/**************************************************
  *函数名称 BYTE2HEX
  *功能描述 将0X0-0xF的整数转换为对应的十六进制字符
  *返回值    转换后的十六进制字符
  *************************************************/
char BYTE2HEX(uint8 int_val)
{
    if (BETWEEN(int_val, 0, 9))
    {
        return int_val + 0x30;
    }

    if (BETWEEN(int_val, 0xA, 0xF))
    {
        return (int_val - 0xA) + 'A';
    }

    return '0';
}



/**************************************************
  *函数名称 BIN2HEX
  *功能描述 转BIN串串十六进制
  *返回值    转换后HEX长度
  *************************************************/
uint BIN2HEX(uint8 * p_binstr, uint bin_len, uint8 * p_hexstr)
{
    uint32 index   = 0;
    uint32 hex_len = bin_len * 2;

    for (index = 0; index < bin_len; index++)
    {
        p_hexstr[index * 2] = BYTE2HEX((p_binstr[index] >> 4) & 0x0F);
        p_hexstr[(index * 2) + 1] = BYTE2HEX(p_binstr[index] & 0x0F);
    }
   
    return hex_len;
}

你可能感兴趣的:(F#)