Go Down

Topic: Conversione dec a ex (Read 971 times) previous topic - next topic

m.alverman

C'è una funzione che mi converte un valore numerico in esadecimale a due byte ?

Grazie, Alberto

anerDev

Per caso hai a che fare con un ricevitore IR ?
Andrea
<a href="http://anerdev.net">anerDev.net</a>

m.alverman


leo72

Lo puoi convertire nel formato byte basso/byte alto con lowByte() e highByte().

m.alverman

Non ce la faccio :(
Ho googlato per un'ora ma non ci capisco una mazza.

Io vorrei 'creare' una funzione che inviadole, per esempio il valore 16, mi rimandi 2 byte 49 e 48.

C'è nessuno che mi regala questa funzione ?

Grazie, Alberto

astrobeed

Quale sarebbe la relazione tra 16 e i numeri 49 - 48 ? Non è certo una conversione di nessun tipo tra valori.
Inoltre cosa intendi esattamente con conversione in esadecimale ?
Hai un valore numerico, che internamente al micro è sempre in binario (= esadecimale se preso a gruppi di 4 bit) e vuoi inviarlo sulla seriale in formato ASCII come valore esadecimale ?


m.alverman

Invio 4 byte cosi:(sono gli ultimi 4)

  sendMSG(48,49,5, 68,48,48,32,49,48,48,48);

e li leggo così:

   data_motor = (hex2num(data[7])<<4)+(hex2num(data[8]));
   data_state = (hex2num(data[9])<<4)+(hex2num(data[10]));       

data_motor = 16
data_state = 0

Se mando:

  sendMSG(48,49,5, 68,48,48,32,49,49,48,48);

avrò:

data_motor = 17
data_state = 0


m.alverman

Boh ...... non ci sto capendo più un .....
Io vorrei solo fare una funzione che dato un numero da 1 a 99 mi ritorni un formato così:

Entro nella funzione con
10
mi ritorna
48 e 65 (BYTE1 0, BYTE2 A)
Entro nella funzione con
11
mi ritorna
48 e 66 (BYTE1 0, BYTE2 B)
Entro nella funzione con
12
mi ritorna
48 e 67 (BYTE1 0, BYTE2 C)
Entro nella funzione con
....
Entro nella funzione con
15
mi ritorna
48 e 70 (BYTE1 0, BYTE2 F)


Entro nella funzione con
16
mi ritorna
49 e 48 (BYTE1 1, BYTE2 0)

e così via.

Non so se sia corretto ma è questa cosa che non riesco a fare che mi fa andare fuori.

Grazie, Alberto

superlol

Code: [Select]

int bytea;
int byteb;
int cambio(int num) {
  switch(num) {
    case 10:
    bytea = 0x48;
    byteb = 0x65;
    break;
    case 11:
    bytea = 0x48;
    byteb = 0x66;
    break;
    case 12:
    bytea = 0x48;
    byteb = 0x67;
    break;
    //continua tu...
  }
}

non è ottimizzato al massimo ma dovrebbe andare... se ho capito quello che volevi ;) quando la chiami poi bytea e byteb assumono i 2 valori
Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Go Up