Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [C] da array a intero

  1. #1

    [C] da array a intero

    salve ragazzi...ho un problema con una particolare funzione che sto implementando nel mio programma...vi posto il codice per farvi capire:
    codice:
    #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...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Utilizza una union ... ad esempio

    codice:
    union _data
    {
    	unsigned char uData[4];
    	int iData;
    } d;
    e poi

    codice:
    	n=3;
    	for(i=0;i<4;i++)
    	{        
                     d.uData[n]=data[i];
    	    n--;
    	}
    
    	printf("%X\n", d.iData);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    okok ho risolto... 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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sempre con la union ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    e come faccio a prenderli 2 a 2?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    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
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    e allora non ho capito come impostare e come funziona precisamente l'union...sai dirmi cosa succede ad ogni passaggio?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma non avevi risolto con la union prima ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    ho usato un altro sistema prima...adesso ad usare la union non ci riesco in quanto non ho capito come funziona...

  10. #10
    grazie lo stesso l'ho capito da solo il codice... ho risolto anche questo secondo problema...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.