Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98

    [C] Casting da TCHAR a BYTE

    Come posso trasformare un TCHAR in un BYTE?

  2. #2
    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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Devo utilizzare il valore ricavato da questa funzione

    codice:
    TCHAR buffer[MAX_PATH];
    GetModuleFileName(NULL,buffer,sizeof(buffer));
    Qui

    codice:
    BYTE ProgramPath[]=

  4. #4
    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.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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.

  6. #6
    Nel caso, GetModuleFileNameA, ma non è una buona idea usare le API ANSI...
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Quote Originariamente inviata da oregon Visualizza il messaggio
    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));
    Nell'altro Thread non c'è alcuna risposta che parli di ciò veramente...
    Comunque, come posso fare un controllo tra due BYTE, per vedere per esempio se sono uguali?
    Ultima modifica di Tiime; 22-04-2014 a 19:40

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da Tiime Visualizza il messaggio
    Nell'altro Thread non c'è alcuna risposta che parli di ciò veramente...
    Avevo risposto ma mi sa che il post si è "perso" come recentemente accade in questo forum ...

    Comunque, come posso fare un controllo tra due BYTE, per vedere per esempio se sono uguali?
    Questo cosa c'entra con questa discussione? Hai risolto la faccenda del cast?

    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.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Problema risolto, si può chiudere

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Come hai risolto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.