type DByte = array[0..1] of byte; { BinToHex Convertis une donnée binaire vers sa représentation hexadécimal (chaine). Paramètres : Buffer [I] non typé Len [I] entier, taille du buffer Str [O] chaine, retour Retour : Retourne une chaine (Str) représentant la donnée en hexadécimal. } procedure BinToHex(const Buffer; const Len: integer; var Str: string); var pB : ^byte; pR : ^DByte; N : integer; const BTC : array[$0..$F] of byte = ($30,$31,$32,$33,$34,$35,$36,$37, $38,$39,$41,$42,$43,$44,$45,$46); begin SetLength(Str, Len shl 1); pB := @Buffer; pR := @Str[1]; for N := 0 to Len-1 do begin pR^[0] := BTC[pB^ shr 4]; pR^[1] := BTC[pB^ and $0F]; inc(pR); inc(pB); end; end; { HexToBin Convertis une chaine representant une donnée en hexadecimal vers une donnée brute. Parametres : Str [I] chaine representant la donnée en hexadecimal LenStr [I] entier, taille de la chaine Buffer [O] buffer de sortie pour la donnée brute. Retour : Retourne une donnée brute (Buffer) a partir de la chaine Str. Note : la taille du Buffer doit etre definie avant l'appel a HexToBin, qu'il s'agisse d'un pointeur, d'une chaine ou d'un tableau. } procedure HexToBin(const Str: string; const LenStr: integer; var Buffer); var pB : ^byte; pS : ^DByte; LZ,N : integer; L,H : byte; begin LZ := LenStr shr 1; pS := @Str[1]; pB := @Buffer; for N := 0 to LZ-2 do begin case pS^[0] of $30..$39 : H := (pS^[0] - $30) shl 4; $41..$46 : H := (pS^[0] - $37) shl 4; else break; end; case pS^[1] of $30..$39 : L := pS^[1] - $30; $41..$46 : L := pS^[1] - $37; else break; end; pB^ := byte(H or L); inc(pS); inc(pB); end; end;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.