conversione binario decimale

c'è una funziona per convertire una variabile int da decimale a binario e viceversa?
spero di non dover scrivere combinazione dopo combinazione perché devo usare una cosa a 8 bit,
fare 256 combinazioni è da suicidio.

Questo?

Serial.print(data,codifica) - Invia alcuni dati alla porta seriale. La codifica è opzionale.

Serial.print(32); // stampa 32

Serial.Print(32, DEC); // stampa in valori decimali

Serial.Print(32, OCT); // stampa in ottale

Serial.Print(32 , BIN); // stampa in binario

Serial.Print(32 , BYTE); // stampa valore associato nella tabella ASCII

Pero mi sembra che con l' IDE 1.0 il comando per stampare in caratteri non sia piu BYTE ma qualcosa tipo write.

Spero di averti aiutato.

Non serve convertirla, semmai serve formattarla nel momento della stampa. (come ha detto Dany_XIII)
@ilmandorlone spiegaci cosa vuoi fare.
Ciao Uwe

no a me non serve formattarla per la stampa mi serve che la variabile stessa diventa in binario.
mi serve per calcoli complessi è una storia lunga :slight_smile:

Io mi ero fatto questa, molto rudimentale, per indirizzare 4 bit:

String int_to_bin(int x){
  String ris;
  do{
   if (x % 2 == 1){
    x=int(x/2);
    ris="1" + ris;
   }
   else{
    x=x/2;
    ris="0" + ris;
   }
  }while(x!=0);
  
  switch(ris.length()){
    case 1: ris="000" + ris;break; //imbottisco la stringa di "zeri" per renderla di 4 bit
    case 2: ris="00" + ris;break;
    case 3: ris="0" + ris;break;
  }
  return ris;
}

Se devi indirizzarne 8 basta aggiungere qualche case!

Perdonate l'intromissione OT.
Stavo leggendo quest'ultimo codice, e non avevo mai visto il segno %. leggendo nel reference mi pare di aver capito che ritorna il resto della divisione.

quindi nel tuo caso:

if (x % 2 == 1)

serve per sapere se il numero è peri o dispari?
Grazie.

va bene grazie credevo esistesse un codice apposito.
me ne faro io uno con la mia strana logica :slight_smile: in modo da capire meglio grazie comunque

mi stavo dimenticando una stoida domanda.
come faccio a unire due numeri?
esempio
x=2
y=4

k=24 // unione di x e y

ilmandorlone:
mi stavo dimenticando una stoida domanda.
come faccio a unire due numeri?
esempio
x=2
y=4

k=24 // unione di x e y

intendi x*10+y?

si be anche in forma matematica ma mi interessava anche per variabili testuali
quindi
x=ci
y=ao
k=ciao
sapete niente?

ilmandorlone:
c'è una funziona per convertire una variabile int da decimale a binario e viceversa?
spero di non dover scrivere combinazione dopo combinazione perché devo usare una cosa a 8 bit,
fare 256 combinazioni è da suicidio.

se è int è già in binario....
forse vuoi passare dal valore numerico alla stringa che lo rappresenta in modo da renderlo comprensibile a noi poveri umani?

intendi x*10+y?

per essere precisi la formula per intero è
valore += x*(10^n);
dove x è una cifra, n la sua posizione (le unità anno posizione 0, così che 10^0 = 1, * x = x :grin:)

ilmandorlone:
si be anche in forma matematica ma mi interessava anche per variabili testuali
quindi
x=ci
y=ao
k=ciao
sapete niente?

questa è concatenazione di stringhe. Molto probabilmente stai usando la classe String, quindi puoi fare k = x+y;
se invece hai un array di char (le vere stringhe in C) allora la libreria string.h ti sarà molto utile... cerca la strcat()

grazie a tutti ho capito :slight_smile:

ilmandorlone:
no a me non serve formattarla per la stampa mi serve che la variabile stessa diventa in binario.
mi serve per calcoli complessi è una storia lunga :slight_smile:

Spiegati meglio perché temo che stai facendo un grosso errore concettuale.

Le variabili vengono tutte memorizzate in forma binaria perché i microcontroller lavorano in binario.
Cosa devi fare in decimale?

Ciao Uwe

uwefed:

ilmandorlone:
no a me non serve formattarla per la stampa mi serve che la variabile stessa diventa in binario.
mi serve per calcoli complessi è una storia lunga :slight_smile:

Spiegati meglio perché temo che stai facendo un grosso errore concettuale.

Le variabili vengono tutte memorizzate in forma binaria perché i microcontroller lavorano in binario.
Cosa devi fare in decimale?

Ciao Uwe

@lesto ha capito tutto

se è int è già in binario....
forse vuoi passare dal valore numerico alla stringa che lo rappresenta in modo da renderlo comprensibile a noi poveri umani?

dab77:
if (x % 2 == 1)

serve per sapere se il numero è peri o dispari?
Grazie.

Si!

Ho solo seguito l'algoritmo che si usa per convertire a mano

sto lavorando a mio codice.
sapete dirmi come si può scomporre un numero in una array o una cosa simile
x=234
scomporlo in 2 3 4

Io convertirei la cifra in stringa, successivamente farei così:

for(i=0;i<cifra.length();i++)
v[i ]=cifra.substring(i,i+1)

for(i=0;i<cifra.length();i++)
v=cifra.substring(i,i+1)

ma mi sa che non funziona con un int. Immagino che con x=234 intendi un numero int.
Per avere le cifre separate e trasformarle in caratteri da mettere in un char array devi sbatterti a fare le divisioni per 10 / 100 ecc..

Ma poi devi fare operazioni matematiche con i numeri che scrivi nella stringa?
perchè ovviamente te li ritrovi come caratteri, quindi tipo il carattere 0 convertito in int è 48, 1 è 49 ecc... quindi devi sottrarre 48 per "riavere" i numeri.

Magari sono cose che sai, in caso chiedo scusa, ma meglio dire una cosa in più..

Forse ha ragione Uwe, nel senso che magari è molto più semplice di quello che credi..
Davide.

In effetti dimenticavo, qui c'è un codice preso dal forum che ho usato per convertire delle stringhe in int :smiley:

int stoi(String text)
{
  char temp[20];
  text.toCharArray(temp, 19);
  int x = atoi(temp);
  if (x == 0 && text != "0")
  {
    x = -1;
  }
  return x;
}