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++ - Conversioni stringa in binario
Forum - C/C++ - Conversioni stringa in binario

Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 19:43
Venerdì, 14/06/2019
Salve,
volevo fare un piccolo programmino che prende in input un file di testo txt e lo converte in binario.
Dopodiché un altro programmino che prende in input il file txt con il testo in binario e lo converte in testo.
Il tutto è finalizzato a creare una cifratura XOR di un testo txt, però innanzitutto volevo sapere come convertire in C una stringa in binario.
Grazie.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:57
Venerdì, 14/06/2019
Che vuol dire per te convertire in binario un file? I dati su disco sono sempre scritti in binario (non potrebbe essere diversamente) ma possono essere interpretati in diverso modo.

A parte che tu parli di "stringa" nel titolo, chiarisci bene il problema (e chiarisciti la questione) prima di continuare.

Ultima modifica effettuata da nessuno il 14/06/2019 alle 20:03


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 20:13
Venerdì, 14/06/2019
Ok, faccio un passo indietro.

Tramite la funzione scanf prendo in ingresso una stringa di 8 caratteri.
come faccio a convertire ogni carattere della stringa in ingresso in binario?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:18
Venerdì, 14/06/2019
I caratteri sono conservati in memoria già in binario.

Tu vuoi vedere su console la "rappresentazione binaria del valore ASCII di ogni carattere"?
Ovvero per il singolo carattere

A

carattere A maiuscola vuoi vedere

01000001

?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 20:31
Venerdì, 14/06/2019
Esattamente

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:49
Venerdì, 14/06/2019
Quindi, per cominciare, devi ottenere il valore ASCII del carattere in una variabile numerica.
Serve una variabile unsigned char (ovvero un byte) quindi, se il buffer dei caratteri si chiama vett, il codice del primo carattere lo ottieni con

unsigned char by = (unsigned char)vett[0];

Dopo, a partire dal valore di by, se questo fosse 65, come lo convertiresti in una sequenza binaria?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 22:15
Venerdì, 14/06/2019
Perché unsigned char? Anche char dovrebbe andare bene visto che ogni lettera in ASCII è un numero positivo compreso tra 65 e 122 e quindi rappresentabile in 8 bit.

Ultima modifica effettuata da Godrek il 14/06/2019 alle 22:17
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:42
Venerdì, 14/06/2019
Così puoi trattare anche carattari ASCII con codice superiore a 127


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Godrek (Normal User)
Pro


Messaggi: 76
Iscritto: 04/08/2015

Segnala al moderatore
Postato alle 1:42
Sabato, 15/06/2019
Ok sono riuscito a fare la conversione di un carattere ASCII in binario nel seguente modo:
#include <stdio.h>

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.   unsigned char carattere_inserito;
  6.   int quoziente;
  7.   int resto[8];
  8.   int index;
  9.  
  10.   printf("Inserisci una carattere: \n");
  11.   scanf("%s", &carattere_inserito);
  12.  
  13.   quoziente = carattere_inserito;
  14.  
  15.   printf("La conversione in decimale della lettera %c è: %d\n", carattere_inserito, quoziente);
  16.  
  17.   for(index=7; index>=0; index--)
  18.   {
  19.     resto[index] = quoziente%2;
  20.     quoziente = quoziente/2;
  21.   }
  22.  
  23.   printf("La conversione in binario della lettera %c è: ", carattere_inserito);
  24.  
  25.   for(index=0;index<=7;index++)
  26.     {
  27.       printf("%d", resto[index]);
  28.     }
  29.  
  30.   return 0;
  31. }



Ora come potrei fare a far digitare all'utente una frase del tipo: piero tofy e a restituire il binario corrispondente?

Ultima modifica effettuata da Godrek il 15/06/2019 alle 4:17
PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo