티스토리 뷰

프로그래밍/C, C++

char, Hex 변환

Dev-Drake 2019. 6. 28. 10:29
반응형

// Char, Hex간 변환
void Char2Hex(unsigned char ch, char* szHex)
{
    static unsigned char saucHex[] = "0123456789ABCDEF";
    szHex[0] = saucHex[ch >> 4];
    szHex[1] = saucHex[ch&0xF];
    szHex[2] = 0;
}

 

//Function to convert a Hex string of length 2 to an unsigned char
bool Hex2Char(char const* szHex, unsigned char& rch)
{
    if(*szHex >= '0' && *szHex <= '9')
        rch = *szHex - '0';
    else if(*szHex >= 'A' && *szHex <= 'F')
        rch = *szHex - 55; //-'A' + 10
    else
        return false;

    szHex++;
    if(*szHex >= '0' && *szHex <= '9')
        (rch <<= 4) += *szHex - '0';
    else if(*szHex >= 'A' && *szHex <= 'F')
        (rch <<= 4) += *szHex - 55; //-'A' + 10;
    else
        return false;

    return true;
}

 

//Function to convert binary string to hex string
void Binary2Hex(unsigned char const* pucBinStr, int iBinSize, char* pszHexStr)
{
    int i;
    char szHex[3];
    unsigned char const* pucBinStr1 = pucBinStr;

    *pszHexStr = 0;
    for(i=0; i<iBinSize; i++,pucBinStr1++)
    {
        Char2Hex(*pucBinStr1, szHex);
        strcat(pszHexStr, szHex);
    }
}

 

//Function to convert hex string to binary string
bool Hex2Binary(char const* pszHexStr, unsigned char* pucBinStr, int iBinSize)
{
    int i;
    unsigned char ch;

    for(i=0; i<iBinSize; i++,pszHexStr+=2,pucBinStr++)
    {
        if(false == Hex2Char(pszHexStr, ch))
        return false;
        *pucBinStr = ch;
    }

    return true;
}

 

반응형

'프로그래밍 > C, C++' 카테고리의 다른 글

리눅스 GetTickCount()활용 TimeOut 기능  (0) 2019.06.28
함수 포인터  (0) 2019.06.28
픽셀을 비트 단위로 저장 후 Hex로 변환  (0) 2019.06.28
통신문자 구분 표시  (0) 2019.06.28
2차원 배열 동적 할당  (0) 2019.06.28
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday