Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Stringa in binario
Forum - C/C++ - Stringa in binario

Avatar
RENOOB (Normal User)
Newbie


Messaggi: 15
Iscritto: 11/04/2011

Segnala al moderatore
Postato alle 22:52
Mercoledì, 31/08/2011
c'è una funzione che ad esempio converte "ciao" in "6369616F" ?


EDIT:

grazie comina8 :k:
ho risolto... però...
come faccio ad assegnarlo ad una variabile?
printf stampa a video soltanto.

EDIT:

ciò che cercavo era l'esadecimale, che l'ho confuso erroneamente con il binario.
Questa è la funzione che mi serviva:
Codice sorgente - presumibilmente C++

  1. char* bin(char name[])
  2.  {
  3.     int len = strlen( name );
  4.         char buffer[10064]="";
  5.         char *pbuffer = buffer;
  6.         for( int i = 0; i < len ;i++ )
  7.         {
  8.                 itoa (name[i],pbuffer,16);
  9.                 pbuffer +=2;
  10.         };
  11.         return buffer;
  12. }


Grazie ancora comina8

Ultima modifica effettuata da RENOOB il 01/09/2011 alle 11:29
PM
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 23:33
Mercoledì, 31/08/2011
Non penso, però puoi stampare la stringa in questo modo:

Codice sorgente - presumibilmente Plain Text

  1. for(i=0; str[i]!='\0'; i++)
  2. {
  3.    printf("%d",str[i]);
  4. }



Per stampare il codice ASCII in decimale, o altrimenti %X per stamparlo in esadecimale.

Se invece vuoi elaborare i caratteri come numeri li devi trattare come tali...

PM
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 20:18
Giovedì, 01/09/2011
Codice sorgente - presumibilmente C++

  1. char* bin(char name[])
  2.  {
  3.     int len = strlen( name );
  4.         char buffer[10064]="";
  5.         char *pbuffer = buffer;
  6.         for( int i = 0; i < len ;i++ )
  7.         {
  8.                 itoa (name[i],pbuffer,16);
  9.                 pbuffer +=2;
  10.         };
  11.         return buffer;
  12. }


mi dispiace ma questo codice non può funzionare... per 2 motivi:
buffer viene creato quando esegui la funzione, e va out of scope in seguito. Questo vuol dire che non ritorni la stringa che hai appena ottenuto, ma della memoria spazzatura;
pbuffer+=2 non è proprio bello da vedere; se assumiamo che i caratteri passati siano nel range 'a'..'z' allora può andare, ma nel caso di caratteri che sono rappresentati con una singola cifra lascieresti uno spazio( un esempio è il newline, che in esadecimale è A ).
Inoltre, itoa() non è una funzione standard, quindi non puoi essere sicuro che vada su tutti i compilatori.
Una soluzione migliore sarebbe questa:
https://ideone.com/X7Mv8
Una soluzione _veramente_ in C++ userebbe uno stringstream e la classe string, ma non mi pare il caso :)

PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
-3
Down
V
Segnala al moderatore
Postato alle 0:34
Giovedì, 01/09/2011
Testo quotato

c'è una funzione che ad esempio converte "ciao" in "6369616F" ?


EDIT:

grazie comina8 :k:
ho risolto... però...
come faccio ad assegnarlo ad una variabile?
printf stampa a video soltanto.



1- il titolo è errato;
2- la sezione è errata;
3- per poterlo assegnare ad una variabile devi per forza scrivere un algoritmo/trovare un classe.


EDIT:

potrei continuare...

4-  "ciao" in "6369616F" non significa niente, bensì "ciao" in "BF9E0CAB", ha qualche chance...

Ultima modifica effettuata da Pitagora il 01/09/2011 alle 9:29
come l'ho detto -.- - Pitagora - 01/09/11 08:40
adesso voglio sapere perchè ho ricevuto -1. Quale cazzata ho detto? - Pitagora - 01/09/11 08:41
il bello è che votate negativamente, senza dire il perchè.... - Pitagora - 01/09/11 16:45
il bello è che votate negativamente, senza dire il perchè.... - Pitagora - 01/09/11 16:46
Quei voti sono anonimi e ognuno può esprimere il suo parere...probabilmente chi ha votato non ho più letto la discussione... - comina8 - 01/09/11 17:42
..... COSA ho detto di così negativo? - Pitagora - 01/09/11 18:43
Probabilmente è per ciò che hai detto, hai solo puntualizzato i miei errori senza nemmeno dire niente di costruttivo, cosa che potevi benissimo tener per te. - RENOOB - 01/09/11 18:51
mmmm hai letto per caso il punto tre? Non credo. Siamo in una community, ogni utente, se sbaglia, deve essere corretto, in modo da non commettere un errore del genere. Una perosna ( indipendentemente se esso sia bambino, uomo, donna, ragazzo, ragazza ) ti corregge, te che fai? La penalizzi? - Pitagora - 01/09/11 18:55
PM