System.Classes.HexToBin

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function HexToBin(const Text: PChar; TextOffset: Integer; var Buffer: TBytes; BufOffset: Integer; Count: Integer): Integer; overload;
function HexToBin(const Text: TBytes; TextOffset: Integer; var Buffer: TBytes; BufOffset: Integer; Count: Integer): Integer;
function HexToBin(Text: PWideChar; Buffer: PAnsiChar; BufSize: Integer): Integer;
function HexToBin(Text: PAnsiChar; Buffer: PAnsiChar; BufSize: Integer): Integer;
function HexToBin(Text: PWideChar; var Buffer; BufSize: Integer): Integer;
function HexToBin(Text: PAnsiChar; var Buffer; BufSize: Integer): Integer;
function HexToBin(Text: PWideChar; Buffer: Pointer; BufSize: Integer): Integer;
function HexToBin(Text: PAnsiChar; Buffer: Pointer; BufSize: Integer): Integer;

C++

extern DELPHI_PACKAGE int __fastcall HexToBin(const System::WideChar * Text, int TextOffset, System::DynamicArray<System::Byte> &Buffer, int BufOffset, int Count)/* overload */;

Propriétés

Type Visibilité  Source Unité  Parent
function public
System.Classes.pas
System.Classes.hpp
System.Classes System.Classes


Description

Convertit une chaîne de chiffres hexadécimaux en la valeur binaire correspondante.

Appelez HexToBin pour convertir la chaîne hexadécimale Text en la valeur binaire qu'elle représente.

Cette fonction reçoit les paramètres suivants :

Paramètre Description

Text

Pointeur vers une chaîne représentant une valeur hexadécimale.

Par exemple : "1decaf".

Remarques :
  • Le nombre hexadécimal doit utiliser des caractères minuscules ; HexToBin ne reconnaît pas de caractères majuscules. Par exemple : "ACDC66" est une chaîne non valide, vous devez utiliser "acdc66" à la place.
  • Le nombre de caractères en entrée doit être un nombre pair. Ce qui signifie que "3d" et "c3f0" sont des chaînes valides en entrée, mais que "2" ou "fda" sont invalides. Cela se produit car la valeur binaire en sortie est en octets (8 bits), et que les caractères hexadécimaux représentent uniquement 4 bits. Vous pouvez ajouter des zéros sur la gauche pour les convertir en chaînes valides sans changer leur valeur : "02", "0fda".
  • Cette chaîne n'a pas besoin d'être une chaîne terminée par null.

TextOffset
(facultatif)

Nombre de caractères à ignorer au début de la chaîne d'entrée.

Par exemple, si Text vaut "608da975" et que TextOffset vaut 4, seul "a975" est converti en binaire.

Buffer

Pointeur sur un tableau d'octets qui recevra la valeur de la chaîne d'entrée hexadécimale.

Par exemple, pour la chaîne "1decaf" en entrée, la valeur binaire en sortie devrait être 00011101 11101100 10101111 (3 octets).

BufOffset
(facultatif)

Nombre d'octets à ignorer au début tableau d'octets en sortie.

Par exemple, si Buffer vaut 00011101 11101100 10101111 avant que vous appeliez HexToBin et que TextOffset vaut 1, HexToBin commence à écrire la valeur en sortie sur le second octet, et le premier octet (00011101) reste inchangé.

BufSize ou
Count

Nombre d'octets (paires de caractères hexadécimaux) à convertir en tableau d'octets en sortie.

Remarque : Cette valeur doit être égale ou inférieure à la moitié de la longueur de la chaîne d'entrée ou à la longueur du tableau en sortie. Par exemple :
  • Si la chaîne d'entrée a une longueur de 8 caractères, ce nombre doit être 4 ou être inférieur à 4.
  • Si le tableau a une longueur de 8 octets, ce nombre doit être 8 ou être inférieur à 8.
  • Si la chaîne d'entrée a une longueur de 8 caractères, et que le tableau a une longueur de 8 octets, ce nombre doit être égal à 4 ou être inférieur (à cause de longueur de la chaîne).

Vous pouvez appeler HexToBin en spécifiant ou en ne spécifiant pas le décalage utilisé pour la chaîne d'entrée (TextOffset) ou pour le tampon de sortie (BufOffset). Toutefois, vous devez spécifier les deux décalages ou n'en spécifier aucun.

Lorsque HexToBin trouve un caractère qui n'est pas un caractère hexadécimal, il arrête la conversion et renvoie une valeur. Par exemple, prenons le cas de la chaîne "9abcdefg", HexToBin convertit uniquement "9abcde", car la paire de caractères suivante ("fg") contient un caractère non valide ("g").

La valeur retournée par HexToBin change selon que vous ayez spécifié ou non des décalages dans l'appel à HexToBin :

  • Si vous avez spécifié des décalages, la valeur renvoyée correspond au nombre d'octets lus dans la chaîne d'entrée et est écrite en binaire dans Buffer. Par exemple, dans le cas de la chaîne "9abcdefg", elle renvoie 3, car elle lit 3 octets ("9abcde", "fg" contient un caractère non valide).
  • Si vous n'avez pas spécifié des décalages, la valeur renvoyée correspond au nombre d'octets n'ayant pas été lus dans la chaîne d'entrée et est écrite en binaire dans Buffer (BufSize - octets écrits dans Buffer). Par exemple, dans le cas de la chaîne "9abcdefg" et d'un BufSize égal à 4, elle renvoie 1, car elle lit 3 octets sur les 4 attendus ("9abcde", "fg" contient un caractère non valide).

Voir aussi

Exemples de code