• CYPRESS BLE 分享
  • Cypress平台情况下,使用的16进制转ASCII,和ASCII转16进制代码

虽然到处都可以复制到,但还是把我自己用的代码分享出来,然后可以帮助到人。

/**************************************************
16进制转ASCII
***************************************************/
unsigned char Hex_To_Ascii(unsigned char Data)
{
    if(Data < 10)
    {
        return (Data+0x30);
    }
    else
    {
        return (Data+0x37);
    }
}
/**************************************************
ASCII转16进制
***************************************************/
unsigned char Ascii_To_Hex(unsigned char Data)
{
    if(Data < 0x40)
    {
        return (Data-0x30);
    }
    else
    {
        return (Data-0x37);
    }
}
/**************************************************
16进制转两个ASCII
高4位转1个,低四位转1个
***************************************************/
unsigned int Hex_To_TwoAscii(unsigned char Data)
{
    unsigned int TwoData;
    unsigned char DataTemp[2];
    DataTemp[0]=(Data&0xf0)>>4;
    DataTemp[1]=Data&0x0f;    
    if(DataTemp[0] < 10)
    {
        DataTemp[0]= DataTemp[0]+0x30;
    }
    else
    {
        DataTemp[0]= DataTemp[0]+0x37;
    }
    if(DataTemp[1] < 10)
    {
        DataTemp[1]= DataTemp[1]+0x30;
    }
    else
    {
        DataTemp[1]= DataTemp[1]+0x37;
    }
    TwoData=DataTemp[0]<<8;
    TwoData=TwoData | DataTemp[1];
    return TwoData;
}
/**************************************************
两个ASCII转一个char
第1个为高4位,第2个为低四位
***************************************************/
unsigned char TwoAscii_To_HEX(unsigned char TempH,unsigned char TempL)
{
    unsigned char HexData;
    if(TempH<0x40)
    {
        TempH=TempH-0x30;
    }
    else
    {
        TempH=TempH-0x37;
    }
    if(TempL<0x40)
    {
        TempL=TempL-0x30;
    }
    else
    {
        TempL=TempL-0x37;
    }  
    TempH=TempH & 0x0F;
    TempL=TempL & 0x0f;    
    HexData=(TempH<<4) | TempL;    
    return HexData;
}
    撰写回复...