|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2006
Messaggi: 37
|
[C] valore contenuto in un array
Ciao a tutti, il mio problema e' questo: avendo un array di char, poniamo di 3 elementi a[0]=0x32 a[1]=0x12 a[2]=0x3D, come posso fare per raggruppare i 3 byte e convertire in decimale il relativo valore? (cioe' 32123D in decimale = 3.281.469).
Grazie a tutti, Davide. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
edit: ops... stavo scrivendo un'altra cosa
![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
Quote:
se hai problemi poi chiedi pure.
__________________
![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
a1[1]=0x12; a1[2]=0x3D; char tot11[255]; char tot1[255]; strcpy(tot11, itoa(a1[0], tot1, 16)); strcat(tot11, itoa(a1[1], tot1, 16)); strcat(tot11, itoa(a1[2], tot1, 16)); tot11 è = 32123d mentre strcpy(tot1, itoa(0x32123D, tot1, 10)); tot1 è = 3281469 |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
puoi anche copiare i valori dell'array in un intero di 4 byte
char a[3]; int i; char *p; ... p = &i; *p++ = a[2]; *p++ = a[1]; *p = a[0]; in i trovi il valore 0x32123d |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io direi con gli shift come dice vizzz.
La soluzione di recoil è interessante e può servire a comprendere i puntatori, ma ha un difetto...il risultato è diverso fra macchine little-endian e big-endian. |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
Quote:
io mi diverto troppo con sti giochetti con i puntatori ![]() |
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Jul 2006
Messaggi: 37
|
Grazie, provero' le varie soluzioni che avete proposto
![]() Davide |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Apr 2007
Città: Lecce
Messaggi: 227
|
E che sarebbero ste macchine little-endian e big-endian? Macchine che gestiscono lo stesso tipo di dato con un numero di byte differenti per caso?
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
Quote:
metti di avere un intero da 4 byte 0x01020304 una macchina big endian salva in memoria quel numero così 0x01 0x02 0x03 0x04 mentre una little endian 0x04 0x03 0x02 0x01 edit: l'esempio che ho fatto io è per un processore little endian, infatti se noti io metto prima l'elemento 2 poi 1 poi 0 dell'array, su una macchina big endian il numero risultante sarebbe stato diverso Ultima modifica di recoil : 18-10-2007 alle 13:50. |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
gia'
![]() ma adesso che ci penso, ne manca uno all'appello: 1234 4321 3412 il 1243 ? ![]() (non so se ho detto una puttanata, non ho molte basi teoriche ![]() EDIT: se non ricordo male avevamo proprio il problema del 3412 col porting da un sistema Tandem a Unix. Ma non ricordo molto anche perché era il mio primo lavoro
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:23.