Convertir des octets en Int / uint en C

J'ai un unsigned char tableau[248]; rempli avec des octets. Comme 2F AF FF 00 EB AB CD EF .....
Ce Tableau est mon Flux d'Octets qui je stocker mes Données à partir de l'UART (RS232) comme un Tampon.

Maintenant je veux convertir les octets de retour à mon uint16 et int32.

En C#, j'ai utilisé le BitConverter Classe pour ce faire. e.g:

byte[] Array = { 0A, AB, CD, 25 };
int myint1 = BitConverter.ToInt32(bytes, 0);
int myint2 = BitConverter.ToInt32(bytes, 4);
int myint3 = BitConverter.ToInt32(bytes, 8);
int myint4 = BitConverter.ToInt32(bytes, 12);
//...
enter code here
Console.WriteLine("int: {0}", myint1); //output Data...

Est-il une Fonction similaire en C ? (no .net , j'utilise le compilateur KEIL parce que le code est en cours d'exécution sur un microcontrôleur)

En Ce Qui Concerne
Sam

Solutions:
Façon Une)

j'ai d'abord eu à convertir ou à initialiser le tableau comme u_int8_t TABLEAU[248];
Ensuite, j'ai utilisé ce code avec votre aide:

 uint32_t* myint1 = (uint32_t *)&RXBUFF[2]; //test
 uint16_t* myint2 = (uint16_t *)&RXBUFF[6]; //test3

À l'Attention de:
La valeur int "1985" dans l'hex est représenté comme 0x07C1 dans myint2 . l'Octet que j'ai envoyé a été "C1 07" donc le Microcontrôleur est en train de changer l'Ordre des Octets

Je vais tester les autres Méthodes.

WR Sam 🙂

source d'informationauteur Sam