Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERSION BIG-ENDIAN EN LITLE-ENDIAN


Information sur la source

Catégorie :Fichier / Disque Niveau : Débutant Date de création : 18/07/2002 Date de mise à jour : 18/07/2002 16:01:59 Vu : 1 855

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

lorsque l'on veut utiliser des données binaires créées à partir d'une station UNix, il est difficile de les lires avec un PC. Car les données binaires sont inversées. Sous station les données binaires sont de type Big-endian et sous PC de type Litle endian.(inversement des deux chaines d'octets). Donc voici un exemples de code permettant de lire du Big endian avec VB6. Je mesuis inspiré d'un code qui le faisait avec des long ici je le fait avec de integer cours(16 octets)
 

Source

  • Type intType
  • L As Integer
  • End Type
  • Type DWordType 'division de l'integer en 2*8octets pour faire l'inversion
  • High As Byte
  • Low As Byte
  • End Type
  • Sub Swap(LE As Integer, swapwords As Integer)' procedure permettant d'inverser les 2*8Octets
  • Dim TempLong As intType
  • Dim TempDWord As DWordType
  • Dim TempInt As Byte
  • TempLong.L = LE
  • LSet TempDWord = TempLong
  • TempInt = TempDWord.High
  • TempDWord.High = TempDWord.Low
  • TempDWord.Low = TempInt
  • LSet TempLong = TempDWord
  • swapwords = TempLong.L
  • End Sub
Type intType
    L As Integer
End Type

Type DWordType 'division de l'integer en 2*8octets pour faire l'inversion
    High As Byte
    Low As Byte
End Type

Sub Swap(LE As Integer, swapwords As Integer)' procedure permettant d'inverser les 2*8Octets
    Dim TempLong As intType
    Dim TempDWord As DWordType
    Dim TempInt As Byte
    TempLong.L = LE
    LSet TempDWord = TempLong
    TempInt = TempDWord.High
    TempDWord.High = TempDWord.Low
    TempDWord.Low = TempInt
    LSet TempLong = TempDWord
    swapwords = TempLong.L
End Sub

Conclusion

pour les integer long
il suffit de déclarer L, LE et Swapwords en long
et high,lowet tempint en integer


 

Commentaires et avis

signaler à un administrateur
Commentaire de OphidiaN le 18/07/2002 23:46:48

fallait savoir... :)

signaler à un administrateur
Commentaire de YahnIck le 19/07/2002 11:28:54

ah oui au fait
c'est pas 16 octets mais 2 octets de 8 bits chacun

signaler à un administrateur
Commentaire de mightykay le 19/02/2004 05:35:27

euuuu désolé mé jcomprend pas trop ton truc tu pourrais me donner un exemple ???
d'utilisation?
je sait que en gros ca donne un truc du genre

000000FF
et FF000000
mais pour lutilisation de ton truc je pige pas

signaler à un administrateur
Commentaire de dthuler le 13/10/2007 21:54:09

Super! je l'ai à peine modifié, ça marche nickel! exactement ce que je cherchais pour les long!!!

signaler à un administrateur
Commentaire de jjenny le 11/11/2008 14:08:33

Super, la conversion avec des short integer est parfaite, mais je n'arrive pas à transformer la routine pour les entiers longs SOS ! Merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.