|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() iMCS Développeur .NET Inscription : septembre 2012 Messages : 37 ![]() |
Salut
Petite aide , ça m'a l'air tout con & simple mais là j'bloque J'ai une valeur dans une textBox en little endian (Résultat d'une valeur décimal) je voudrais tout simple ajouté une options du genre "Convertir le résultat en Big Endian" , faut juste "Reverse" les bytes mais comme c'est affiché en textBox je bloque niveau convertion , si quelqu'un serait m'aidé j'suis preneur , merci ! |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 390 ![]() |
voir BitConverter.GetBytes()
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Bonsoir,
Peux-tu nous donner un exemple de ce que tu as dans ta textbox. Est-ce directement un nombre (genre 123456), ou est-ce une représentation (binaire, hexa, etc...). Si c'est le premier cas (comme j'ai l'impression que c'est de cela dont il s'agit), il faut : 1) convertir ton ta chaine en entier (cf. int.Parse) 2) convertir ton entier en tableau de byte (cf. BitConverter.GetBytes comme l'a souligné Graffito) 3) inversé le tableau d'entier (cf. Array.Reverse) 4) reconvertir le tableau de byte en entier (cf. BitConverter.ToIntXXX) |
|
00
|
|
|
#4 | |||
|
Futur Membre du Club
![]() iMCS Développeur .NET Inscription : septembre 2012 Messages : 37 ![]() |
Citation:
Code :
Et que je lance cette fonction j'obtient : 1e8480 Mais je voudrais que ça s'affiche en Big Endian , donc le résultat pour 2000000 devrait être 80841e. Voilà , Merci |
|||
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Tu as fait le point 1, ne reste que le 2, le 3 et le 4
Code :
|
||
|
00
|
|
|
#6 | |||
|
Futur Membre du Club
![]() iMCS Développeur .NET Inscription : septembre 2012 Messages : 37 ![]() |
Citation:
Merci
|
|||
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Une simple recherche sur la méthode t'aurais menée à la documentation officielle (http://msdn.microsoft.com/en-us/libr....touint32.aspx), et tu te serais aperçu que j'avais simplement oublié de préciser l'index de départ pour le tableau. Dans ton cas, il s'agit de 0
|
|
00
|
|
|
#8 | |
|
Futur Membre du Club
![]() iMCS Développeur .NET Inscription : septembre 2012 Messages : 37 ![]() |
Citation:
Du coup même en y mettant l'index ça ne fonctionne pas |
|
|
|
00
|
|
|
#9 | ||
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Arf, la c'est ma faute ^^ Comme je n'ai pas testé le code que j'ai écris...
voici le bon : Code :
|
||
|
00
|
|
|
#10 | |||
|
Futur Membre du Club
![]() iMCS Développeur .NET Inscription : septembre 2012 Messages : 37 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Peux-tu nous donner plus d'information ? Quel est ton jeu de test ? Qu'est-ce que tu obtiens ? Qu'attends-tu ?
As-tu regardé l'évolution du tableau de byte tab afin de voir si l'ordre était bien inversé ? etc... |
|
00
|
|
|
#12 | |||
|
Futur Membre du Club
![]() iMCS Développeur .NET Inscription : septembre 2012 Messages : 37 ![]() |
Citation:
Code :
la textBox2 affiche le résultat qui est 1e8480 pour la valeur. Il me faudrait juste inversé le bytes , donc 80841e. je ne sais pas si c'est possible de bien changer de place les bytes du résultat : String.Format("{0 merci |
|||
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Je viens de tester le code que je t'ai donné plus haut, et il fonctionne a un détail près : il renvoie une valeur sur 32 bits, même si la donnée d'entrée peut être codée sur un nombre inférieur de bits. Ce qui fait que lorsque tu veux convertir un nombre (au hasard, 0xe1E8480), alors il considère un entier sur 32 bits (0x001E8480), et donc, en big endian (0x80841E00).
Et pour 1337, (0x539), cela te retourne 0x39050000. Tout est donc normal pour moi. |
|
00
|
Copyright © 2000-2013 - www.developpez.com