//출처 : 내가만든거

QString CUtil::hexaToHexaString(uint target, ENDIAN endian)
{
    QString retValue;
    uchar targetBuf[4] = { 0, };
    uchar* targetPtr = (uchar*)⌖

    if (endian == ENDIAN_BIG)
    {
        targetBuf[0] = targetPtr[3];
        targetBuf[1] = targetPtr[2];
        targetBuf[2] = targetPtr[1];
        targetBuf[3] = targetPtr[0];
    }
    else
    {
        targetBuf[0] = targetPtr[0];
        targetBuf[1] = targetPtr[1];
        targetBuf[2] = targetPtr[2];
        targetBuf[3] = targetPtr[3];
    }

    retValue.sprintf("%02x%02x%02x%02x", targetBuf[0], targetBuf[1], targetBuf[2], targetBuf[3]);
    return retValue;
}

QString CUtil::hexaToAsciiString(const uint hexaData, CUtil::ENDIAN endian)
{
    char* ascStr = (char*)&hexaData;

    QString ret;

    if (endian == ENDIAN_BIG)
    {
        ret.append(ascStr[3]);
        ret.append(ascStr[2]);
        ret.append(ascStr[1]);
        ret.append(ascStr[0]);
    }
    else
    {
        ret.append(ascStr[0]);
        ret.append(ascStr[1]);
        ret.append(ascStr[2]);
        ret.append(ascStr[3]);
    }


    return ret;
}

 

함수설명

 

예를들어 데이터를 int(4byte)에 담아서 뭔가를 한다고 하자 근데 1byte마다 hexa형태의 데이터를 사용해야 할 때가있다.

 

가령 데이터가

 

 

0x31313131 < - 요런식으로

 

첫번째함수는

0x31313131를 -> 고대로 "31313131" 로 바꾸어준다

 

두번째함수는

0x31313131를 -> 아스키형태의 String으로 "1111"로 바꾸어준다. 필요한사람 가져다쓰세요~

 

함수는 uint로 했지만 다른 메모리를 사용하고 싶다면 적당히 오버로딩해서 여러타입을 넣어서쓰면된다.

+ Recent posts