Come posso trasformare un TCHAR in un BYTE?
Come posso trasformare un TCHAR in un BYTE?
Dipende. Un TCHAR è un char o un wchar_t a seconda che compili in ANSI o Unicode; un BYTE è un unsigned char.
Ora, se compili ANSI la conversione char => unsigned char è diretta (basta un cast); se invece il TCHAR è in realtà un wchar_t la conversione dipende da diverse cose:
- vuoi fare un "dump" del wchar_t in byte? Allora devi copiare il byte alto e il byte basso del wchar_t in due BYTE separati;
- vuoi scrivere una stringa Unicode "wide" (UTF-16) in un encoding a byte singoli? Allora devi convertire in UTF-8 (per cui un wchar_t può diventare fino a tre BYTE, e se hai due wchar_t che formano una coppia surrogata li devi processare insieme per ottenere un output sensato).
Ergo: spiega meglio la situazione.
Amaro C++, il gusto pieno dell'undefined behavior.
Devo utilizzare il valore ricavato da questa funzione
Quicodice:TCHAR buffer[MAX_PATH]; GetModuleFileName(NULL,buffer,sizeof(buffer));
codice:BYTE ProgramPath[]=
Ancora non ne so nulla... Quel programPath da chi dev'essere usato? Perché è dichiarato di tipo BYTE?
Amaro C++, il gusto pieno dell'undefined behavior.
Ti avevo già detto nell'altro thread che, a determinate condizioni, avresti potuto direttamente utilizzare l'array di byte ... ma neanche hai provato a farlo ...
codice:BYTE ProgramPath[MAX_PATH]; GetModuleFileName(NULL, (LPSTR)ProgramPath, sizeof(ProgramPath));
No MP tecnici (non rispondo nemmeno!), usa il forum.
Nel caso, GetModuleFileNameA, ma non è una buona idea usare le API ANSI...
Amaro C++, il gusto pieno dell'undefined behavior.
Avevo risposto ma mi sa che il post si è "perso" come recentemente accade in questo forum ...
Questo cosa c'entra con questa discussione? Hai risolto la faccenda del cast?Comunque, come posso fare un controllo tra due BYTE, per vedere per esempio se sono uguali?
Se cambiamo argomento, ci vuole un altro thread ... in ogni caso, il controllo di base tra due BYTE (o due array di BYTE?) si fa con una semplice if ... Ma devi confrontare due percorsi di file? Perché utilizzare un array di BYTE?
Ultima modifica di oregon; 22-04-2014 a 21:37
No MP tecnici (non rispondo nemmeno!), usa il forum.
Problema risolto, si può chiudere
Come hai risolto?
No MP tecnici (non rispondo nemmeno!), usa il forum.