begin process at 2012 05 29 14:25:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème de conversion byte[] en int


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de conversion byte[] en int

mardi 26 avril 2005 à 14:18:56 | Problème de conversion byte[] en int

Quemar

Bonjour,
j'ai un probleme de conversion

j'utilise une liaison serie pour communiquer avec un instrument qui me renvoie des tableaux de bytes...  (enfin je lit des tableaus de Byte sur le liaison)
J'ai besoin de recuperer des informations de ces tableaux et pource j'aimerai convertir 2bytes en  short ou 4bytes en int ????.
Voila ce que je recoit :   example:
             byte Tab[] = {0x07, 0xD4}

Et je veux recupere :
          short année = 2004

Je suis en train de developper une interface pour cet instrument et j'utilise Visual C++ .NET
Je n'ai pas troué de foction qui realise ceci mais je me doute qu'ildoit exister un moyen simple de faire ceci.

Si quelqu'un a compris quelque chose a mon problème mercei de m'aider ...

mardi 26 avril 2005 à 16:00:26 | Re : Problème de conversion byte[] en int

Quemar

en fait j'ai resolu mon probleme en lisant directement le type que je veux ....
plus besoin de faire de conversion!!!!
Mais si quelqu'un  a la solution qu'il ne se prive pas pour me la dnner....

merci

mardi 26 avril 2005 à 19:59:53 | Re : Problème de conversion byte[] en int

0xYg3n3

Desole mais je pense que c'est impossible de convertir un tableau de quelque chose
en une variable de n'importe quel type

Par contre tu peux aisement convertir un champ de ton tableau...

mercredi 27 avril 2005 à 11:56:05 | Re : Problème de conversion byte[] en int

Quemar

en fait la methode que j'ai trouvé fonctionne mais j'ai ete obligé de l'abandonné car incompatible avec ce que je veux!!!!

j'aimerai que tu m'en dises plus sur ta solution....
je sais que l'on peut facilement convertir une valeur d'un tableau de byte en int par exemple

Mais moi ce que je veux c conveertir 2bytes (2*8bit) contenu ds un tableau de byte en un short
Parce que mes 2 bytes represente qu'une seule valeur de type short (16bit)...?????


-->>       exemple de mon problème:  
mon instrument via la liaison serie me revoie un tableau de byte:
byte TAB[10] = {0xBB, 0xA5,..., 0xD5, 0x07,...}

moi ce que je veux c 0xD5 et 0x07 qui est une année 07D5 = 2005
mais le probleme est que si je lit directement un short de la liaison serie (SANS PASSER PAR LE TABLEAU CI DESSUS)(c la solution que j'avais trouvé) je lit : D507 = 54355
et apres impossible d'en faire quoi que ce soit !!!!! OUBIEN

Donc je stock tout ds un tableau, je retourne (ca c facile!!!) et apres j'aimerai lire 2byte du tableau pour en faire un short.... mais ca c pas possible !!!!


Quelqu'un a t il une solution?    



mercredi 27 avril 2005 à 12:17:40 | Re : Problème de conversion byte[] en int

Quemar

cbon plus de prob
ma solution precedente marche tres bien

dosole me suis trompe!!!

merci

mercredi 27 avril 2005 à 12:42:52 | Re : Problème de conversion byte[] en int

ymca2003

Réponse acceptée !
byte TAB[10] = {0xBB, 0xA5,..., 0xD5, 0x07,...}
short val = *((short*)(&TAB[0]));
short val = *((short*)(&TAB[2]));
...
mercredi 27 avril 2005 à 17:16:08 | Re : Problème de conversion byte[] en int

Quemar

Je ne comprend pas ce tout petit code !!!!!

mais ca marche (il faut juste que je declare un unsigned short mais sinon)
si t'as le temps de m'eclairer et de m'expliquer !!!!
je suis pas un dieu du C !!! 

merci

mercredi 27 avril 2005 à 18:03:28 | Re : Problème de conversion byte[] en int

ymca2003

Dans la mémoire, toutes les variables sont constituées d'une suite d'octet. un BYTE 1 octet, un WORD 2 octets et 1 DWORD 4 octets. Les octets sont stockés poids faible en tête (little endian)
exemple :
int val = 0x12345678;

=> en mémoire tu trouvera les octets :
0x78 0x56 0x34 0x12

maintenat si tu as un pointeur sur le premire octet de cette zone, tu peux y lire soit 1, 2 ou 4 octets directement dans une variable BYTE, WORD ou DWORD grace au little endian.
pour cela il fuat convertir le pointeur sur l'octet en un pointeur sur le type de la varaible et de récupéréer la valeur.

Exemple :

// suite d'octet en mémoire
BYTE TAB[10] = {0xBB, 0xA5,..., 0xD5, 0x07,...}

// pointeur sur le 2 ème octet de cette suite
BYTE* pb = &TAB[10];

// transformation en un pointeur sur WORD (même adresses mais permet de lire 2 octet)s
WORD* pw = (WORD*)pb;

// récupération de la valeur
WORD w = *pw;
jeudi 28 avril 2005 à 00:57:29 | Re : Problème de conversion byte[] en int

Arnaud16022

Membre Club
c'est la qu'on voir l'avantage de l'asm, pas besoin de pointeurs, un simple décalage de bits et c'est ok... mais le débat n'est pas la.
pas mal ton code, ymca, mais je doute que ce soit la meine de compliquer les choses avec le big/little endian et le poids des bits...encore une fois le débat n'est pas la
ok je sors ^^
++
_______________________
Omnia vincit labor improbus


Cette discussion est classée dans : problème, int, conversion, utilise, byte


Répondre à ce message

Sujets en rapport avec ce message

conversion int en char* [ par arwenita ] Encore un petit problème en C++...Dans mon programme, je voudrais afficher une liste de nombres (premiers), que je récupère de la fonction Crible(n).L conversion byte->int [ par lekev42 ] typedef struct tagRGBQUAD {        BYTE    rgbBlue;        BYTE    rgbGreen;        BYTE    rgbRed;        BYTE    rgbReserved;} RGBQUAD;typedef unsig getline et premier caractère [ par poiuytrez3 ] Bonjour,J'ai un problème avec ma fonction getline en C++.Lorsque je l'utilise plusieurs fois, elle semble ne plus marcher correctement et zappe le pre printf de char en hexadécimal affiche un byte en 4 caractères ? [ par develdelphi ] Bonjour,Le printf  de mon compilateur génère des erreures d'affichages, en effet je dipose de variables unsigned char que je voudrais affichées en héx Problème classe [ par krokro6 ] Bonjour, voici mon problème: J'ai deux classe, une classe A et une classe B: class A { public : A(); virtual ~A(); int Pos Conversion de char en int ? [ par jnbrunet ] Salut,Je débute en c++... dans mon programme j'aimerai additionner les valeurs entrées en argument dans le main (argv). Le problème est que la variabl list avec NMFTP [ par critorix ] Bonjour a tous,J'utilise le composant NMFTP pour creer un client FTP et je souhaite recuperer le nom, la date de derniere modification, ainsi que la t Problème de conversion!!! [ par arfimounir ] Salut, j'ai bésoin de l'aide sur le problème suivant en VC++ 2005:Exemple: X = 100               Y = X / 3   sprintf(bfr, "%i",Y)   Y = 30   ou   brf problème de conversion [ par IH2MCBETA ] Bonjour ,voila une erreur que je n'arrive pas résoudre code:void CPage1::OnEnKillfocusNbrun(){</font Conversion Float -> Int [ par DroledeBx ] Bonjour,J'ai un problème de conversion entre un float et un entier.Je récupère dans un fichier, sous le type float, une valeur décimale, trois chiffre


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales