Les Snippets

Connexion

Inverser les octets d'un DWORD

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 09/04/2006 23:54:16 et initié par SAKingdom [Liste]
Date de mise à jour : 26/04/2007 02:48:07
Vue : 7600
Catégorie(s) : Trucs & Astuces
Langages dispo pour ce code :
- C
- VB6
- Delphi 5



Langage : C
Date ajout : 09/04/2006
Posté par SAKingdom [Liste]
DateMAJ : 10/04/2006
DWORD InvertDWORD (DWORD v)
{
    return ((v << 24) | ((v << 8) & 0xFF0000) | ((v >> 8) & 0xFF00) | (v >> 24));
 }

Langage : VB6
Date ajout : 11/04/2006
Posté par Gobillot [Liste]

 Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
 
 Public Function InvertDword(V As Long) As Long
     Dim i     As Integer
     Dim R    As Long
     Dim pV   As Long
     Dim pR   As Long
 
     pV = VarPtr(V)
     pR = VarPtr(R)
     
     For i = 0 To 3
         CopyMemory pR + i, pV + 3 - i, 1
         Next
 
     InvertDword = R
 End Function
 
 
Langage : Delphi 5
Date ajout : 05/08/2006
Posté par f0xi [Liste]
DateMAJ : 26/04/2007
{ Inversion des bytes (methode swap) pour type Word, Cardinal (DWord) et Int64 (QWord) et tout autres données.
 
 Les methodes sont ecrites en assembleur integré pour alléger au maximum le code,
 la ou il faudrait plusieurs instruction a base de shl et shr.
 
 word : BSwap(word($AABB)) = $BBAA
 cardinal : BSwap(cardinal($AABBCCDD)) = $DDCCBBAA
 int64 : BSwap(int64($11223344AABBCCDD)) = $DDCCBBAA44332211
 }
 
 
 { interface }
  
 
 function BSwap(const a : word) : word; overload;
 function BSwap(const a : cardinal) : cardinal; overload;
 function BSwap(const a : int64) : int64; overload;
 procedure BSwap(const BufferIn, BufferOut : pointer; const BufferLen : integer); overload;
 
 
 { implementation }
 
 function BSwap(const a : word) : word; 
 asm
   xchg al,ah;
 end;
 
 
 function BSwap(const a : cardinal) : cardinal; 
 asm
   bswap eax;
 end;
 
 
 function BSwap(const a : int64) : int64; 
 asm
   MOV EDX,[EBP+$08];
   MOV EAX,[EBP+$0C];
   BSWAP EAX;
   BSWAP EDX;
 end;
 
 
 procedure BSwap(const BufferIn, BufferOut : pointer; const BufferLen : integer);
 var pBi,pBo : PChar; // vieille achtuce qui a fait ses preuves ;)
     N,L     : integer;
 begin
   // aucunes gestion des erreurs, c'est au dev de verifier les parametres passés a BSwap.
   pBi := BufferIn;
   pBo := BufferOut;
   L   := BufferLen-1;
   for N := 0 to L do
     pBo[L-N] := pBi[N];
 end;
 
 

Snippets en rapport avec : Inverser, Invertion, Dword, Invert



Codes sources en rapport avec : Inverser, Invertion, Dword, Invert

{Visual Basic, VB6, VB.NET, VB 2005} INVERSER L'ORDRE D'UNE COLONE DANS EXCEL
bonjour cette source permet d'inverser les éléments des cellules d'une colone sur excel. exemple...

{Visual Basic, VB6, VB.NET, VB 2005} [.NET2] ECRIRE DANS LA BASE DE REGISTRE UNE VALEUR DWORD SUPÉRIEUR À 2^31
J'ai rencontré un petit problème lors de l'écriture d'une valeur dword dans la base de registre. Ce...

{Flash} NEGATION D'UNE IMAGE BITMAP (FLASH 8 BETA)
Voila un petit exemple suite à la source déposée concernant flash player 8 et sa gestion des pixels....

{Delphi} FILTRE GRAPHIQUE : INVERT ET GREYSCALE
Bon voila ce code permet de faire 2 effet graphique (Voir titre ^) sinon ya pas grand chose de plus ...

{Delphi} WRITE_DWORD_REG
Comment écrire une clé DWORD dans votre Base des Registres ...

{Visual Basic, VB6, VB.NET, VB 2005} CRYPTER UNE IP VERS LE DWORD
Ce prog sert à convertir une ip normale vers une ip en Dword. Bon, je pense que pas grand monde a c...

{Visual Basic, VB6, VB.NET, VB 2005} INVERSER LA SOURIS
Ce code est pas de moi il vient du reseach center ...

{Visual Basic, VB6, VB.NET, VB 2005} BLACK-FX: INVERT
Inversion de couleur sur une image l'effet le plus classique qui existe! ...

{Visual Basic, VB6, VB.NET, VB 2005} INVERSER LES BOUTONS DE LA SOURIS
Ce code vous permet d'inverser les boutons de la souris. Creer 3 command boutons et nommer les resp...

{Visual Basic, VB6, VB.NET, VB 2005} INVERSER LES BOUTONS DE LA SOURIS
Comment puis inverser les boutons de la souris ? Mettez ce code dans un module :...