BinaryToHex
-
Hi!
Ich hab folgendes Problem.
Ich habe einen String gegeben in dem BinäreDaten stecken.
Also keine {1,0} Folge sondern die seltsamen Zeichen *g*.
Dies hätte ich gerne wie ein HexEditor es ausgibt als HexString.
Ich benutze VisualStudio7 und schreibe in C++!Danke im Vorraus!
-
was für selsame Zeichen stecken denn da drin? base64? Buchstabe / Zahlengemisch / also letztlich Ascii-Zeichen oder wie sieht das aus?
-
ich denk base64!
Die Funtktion sollte das gleich oder ähnliches tun wie die PHP-Funktion
bin2hex
Danke im VorrausAls Hinweiß... wenn ich einen stantdart Hexeditor nehme und auf Hexadezimal anzeige gehe, dann sehe ich genau das was ich bräucht!

-
static inline TCHAR ByteToHex(int c) { return static_cast<TCHAR>((c<10) ? (c)+_T('0') : (c)-10+_T('A')); } void BinToString(PCVOID pData, PTSTR pszOut, int iLen) { int iPos=0; const BYTE *pszStr = (const BYTE *)pData; while (iLen--) { BYTE byte = *pszStr++; BYTE uByte = (byte & 0xF0) >> 4, lByte = byte & 0xF; pszOut[iPos++] = ByteToHex(uByte); pszOut[iPos++] = ByteToHex(lByte); } pszOut[iPos] = '\0'; }
-
Danke für den Code!
Allerdings bringt der kompiler nur Fehler.
Hab nun folgendes:static inline string ByteToHex(int c) { return static_cast<string>((c<10) ? (c)+_T('0') : (c)-10+_T('A')); } void BinToString(unsigned char* pData, string* pszOut, int iLen) { int iPos=0; const BYTE *pszStr = (const BYTE *)pData; while (iLen--) { BYTE byte = *pszStr++; BYTE uByte = (byte & 0xF0) >> 4, lByte = byte & 0xF; pszOut[iPos++] = ByteToHex(uByte); pszOut[iPos++] = ByteToHex(lByte); } pszOut[iPos] = '\0'; }wobei die Funktion ByteToHex den folgenden Fehler bringt:
testLoggerObject.cpp(27) : error C3861: '_T': identifier not found, even with argument-dependent lookup
testLoggerObject.cpp(27) : error C3861: '_T': identifier not found, even with argument-dependent lookup
-
Wenn du mit std::string arbeitest, benötigst du das _T()-Makro auch nicht wirklich
Das dient dazu, eine Zeichenkonstante je nach Projekteinstellungen als ASCII oder UNICODE darzustellen.(und statt "string" solltest du eher "char" verwenden)
-
wenn ich nun
static inline TCHAR ByteToHex(int c) { return static_cast<TCHAR>((c<10) ? (c)+_T('0') : (c)-10+_T('A')); } void BinToString(unsigned char* pData, string* pszOut, int iLen) { int iPos=0; const BYTE *pszStr = (const BYTE *)pData; while (iLen--) { BYTE byte = *pszStr++; BYTE uByte = (byte & 0xF0) >> 4, lByte = byte & 0xF; pszOut[iPos++] = ByteToHex(uByte); pszOut[iPos++] = ByteToHex(lByte); } pszOut[iPos] = '\0'; }schreibe bekomme ich die gleiche fehlermeldung.
aber... wie sähe das mit char aus?Danke
-
static inline char ByteToHex(int c) { return static_cast<char>((c<10) ? (c)+'0' : (c)-10+'A'); }