CString als Hex Wert in CString speichern ?



  • Hallo,

    ich suche eine Möglichkeit, einen Text der in einem CString enthalten ist, als einen Hex Wert in einen anderen CString zu speichern !

    Gibt es hierfür eine Möglichkeit ?

    Danke Coolsero



  • so wie aufgeführt wäre es eine möglichkeit. wenn der String aus mehreren zeichen besteht must du das halt in eine schleife packen

    int iHex=0;
    	char szChar[2]="A";
    	char szHex[3];
    
    	iHex += szChar[0];//Zeichen A in Int wandeln A ist 65
    
    	sprintf(szHex,"%.02x",iHex);//Int in Hex wandeln 65 ist nun 41
    
    	MessageBox(szHex);
    

  • Mod

    Man kann auch ohne sprintf auskommen. Das ist natürlich dann auch etwas flinker.

    static inline char ByteToHexA(int c)
    {
        return static_cast<char>((c<10) ? (c)+'0' : (c)-10+'A');	
    }
    
    void BinToString(PCVOID pData, PSTR pszOut, int iLen)
    {
        // Durchlaufe den gesamten Bereich
        int	iPos=0;
        const BYTE *pszStr = (const BYTE *)pData;
        while (iLen--) 
        {
            // Lade das nächste Byte
            BYTE byte = *pszStr++;
            BYTE uByte = (byte & 0xF0) >> 4,
                 lByte = byte & 0xF;
            pszOut[iPos++] = ByteToHexA(uByte);
            pszOut[iPos++] = ByteToHexA(lByte);
        }
        pszOut[iPos] = '\0';
    }
    


  • <Korinthen kack>
    Oder noch flinker (ca. 25% in der Debug Version):

    static inline char ByteToHexA2(int c)
    {
        return "0123456789ABCDEF"[c];   
    }
    

    </Korinthen kack>


  • Mod

    Jupp! Gute Idee!


Anmelden zum Antworten