Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - C - conversione int array a unsigned char
Forum - C/C++ - C - conversione int array a unsigned char

Avatar
Neo1986 (Ex-Member)
Pro


Messaggi: 97
Iscritto: 21/06/2010

Segnala al moderatore
Postato alle 10:25
Mercoledì, 29/02/2012
Buongiorno a tutti!

Ho un piccolo problema, causato penso dalla ruggine
accumulata dopo anni di inutilizzo del C.

Ho un array int dichiarato in questo modo:

int DatoRX(52);

L'array contiene una serie di 0 e 1.

A questo punto devo passare questo array ad una funzione (per l'invio su socket tcp) e questa richiede in ingresso un array "byte".

Come posso fare per convertire l'array da intero a unsigned char?

Grazie

PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 14:45
Mercoledì, 29/02/2012
send(connection, (char *)DatoRX, sizeof(int) * 52, 0)

ci pensa il cast char * a convertire il tutto.

Ultima modifica effettuata da lorenzo il 29/02/2012 alle 14:46
Occhio ... non c'è nessuna conversione. I dati sono interi e interi restano. - nessuno - 29/02/12 20:05
PM
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 10:42
Mercoledì, 29/02/2012
So che esiste la funzione itoa(int, char *, int), il primo parametro intero viene convertito in un array di char l'ultimo parametro specifica la base del dato numerico da converire.
esempio:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main (){
  5.  
  6.   int i;
  7.   char buffer [33];
  8.  
  9.    printf ("Enter a number: ");
  10.    scanf ("%d",&i);
  11.    itoa (i,buffer,10);
  12.    printf ("decimal: %s\n",buffer);
  13.    itoa (i,buffer,16);
  14.    printf ("hexadecimal: %s\n",buffer);
  15.    itoa (i,buffer,2);
  16.    printf ("binary: %s\n",buffer);
  17.  
  18. return 0;
  19. }


Ultima modifica effettuata da Bonny il 29/02/2012 alle 10:43
PM