PDA

Visualizza la versione completa : [C] da array a intero


nemero16
07-02-2010, 17:17
salve ragazzi...ho un problema con una particolare funzione che sto implementando nel mio programma...vi posto il codice per farvi capire:


#include <stdio.h>
#include <stdlib.h>

main()
{unsigned char data[4],data1[4];
int i, n;

data[0]=0x6B; //qui ho dato dei valori in hex casuali all'array data, ma devo fare in modo
data[1]=0xFD; //che accetti tutti i valori che posso dargli (sono byte questi valori)
data[2]=0xFF;
data[3]=0xFF;


for(i=0;i<4;i++){
data[i]=0xFF-data[i]; //qui faccio una differenza che mi serve in quanto devo sottrarre
} //tutto con FFFFFFFF

n=3;
for(i=0;i<4;i++){ //qui riporto tutto l'array in un'altra variabile(data1) con gli elementi
data1[n]=data[i]; //invertiti cioè prima era 94020000 invece adesso diventa 00000294
n--; //che è il valore finale che mi serve
}
//e adesso come faccio a trasformare quell'array che ho ottenuto in valore unico? io devo ottenere alla fine ad esempio 294 che poi mi serve per una moltiplicazione...come posso fare?
}

ringrazio anticipatamente...

oregon
07-02-2010, 17:34
Utilizza una union ... ad esempio



union _data
{
unsigned char uData[4];
int iData;
} d;


e poi



n=3;
for(i=0;i<4;i++)
{
d.uData[n]=data[i];
n--;
}

printf("%X\n", d.iData);

nemero16
08-02-2010, 00:52
okok ho risolto...:D adesso invece sto provando il contrario...o meglio ho dei byte in un long e devo portare il tutto in un array...esempio:

long long dato; unsigned char dato1[4];

dato=0xAABBCCDD;

deve diventare così:

dato1[0]=0xAA;
dato1[1]=0xBB;
dato1[2]=0xCC;
dato1[3]=0xDD;

ho provato ad usare sprintf e itoa ma riesco solo ad ottenere cose del tipo: 0xA,0xA,0xB ecc. cioè non riesco a prendere 2 lettere alla volta...come posso fare?

oregon
08-02-2010, 01:19
Sempre con la union ...

nemero16
08-02-2010, 12:18
e come faccio a prenderli 2 a 2? :confused:

oregon
08-02-2010, 12:20
Ma che vuol dire a 2 a 2 ? Un valore come

0xAA

è la rappresentazione esadecimale di un singolo byte, quindi di un solo elemento del vettore

nemero16
08-02-2010, 12:32
e allora non ho capito come impostare e come funziona precisamente l'union...sai dirmi cosa succede ad ogni passaggio?

oregon
08-02-2010, 12:33
Ma non avevi risolto con la union prima ?

nemero16
08-02-2010, 12:34
ho usato un altro sistema prima...adesso ad usare la union non ci riesco in quanto non ho capito come funziona... :dhò:

nemero16
08-02-2010, 23:57
grazie lo stesso l'ho capito da solo il codice...:D ho risolto anche questo secondo problema... :ciauz:

Loading