22 Voix

Delphi/Lazarus: Afficher Array d'Octets sous forme de Chaîne de Valeurs HEX

Conseil de Delphiain | 02/04/2021 à 19:23

Lorsque vous travaillez avec des tableaux d'octets, la question de la visualisation se pose tôt ou tard. Ici, il est logique de sortir les octets individuels sous forme hexadécimale sous forme de chaîne (string). Dans cette astuce, je veux vous montrer une fonction qui fait exactement cela.

Dans l'exemple, nous utilisons la définition suivante d'un tableau d'octets:

type
  TByteArr = array of Byte;

La fonction parcourt le tableau d'octets octet par octet et convertit chaque valeur d'octet en la valeur hexadécimale correspondante:

function ByteArrayToHexString(BA: TByteArr; Sep: string = ''): string;
var
  i, k: integer;
begin
  result:='';

  if Sep='' then begin
     for i:=low(BA) to high(BA) do 
       result := result + IntToHex(BA[i], 2);
  end else begin
     k:=high(BA);
     for i:=low(BA) to k do begin
        result:= result + IntToHex(BA[i], 2);
        if k<>i then result := result + Sep;
     end;
  end;
end; 

D'une part, la fonction ne peut être appelée qu'avec un tableau d'octets ou d'autre part éventuellement avec un séparateur, qui est écrit entre les octets individuels pour une meilleure lisibilité.

var
  BA: TByteArr;
  s: string;
begin
  SetLength(BA, 3);
  BA[0] := 65;
  BA[1] := $41;
  BA[2] := %1000001; // cela ne fonctionne que dans Lazarus

  s := ByteArrayToHexString(BA);        // 414141
  s := ByteArrayToHexString(BA, ' ');   // 41 41 41

Dans cet exemple, nous créons d'abord un tableau d'octets de 3 octets de long, puis nous le remplissons avec des valeurs. Ensuite, nous utilisons notre fonction pour afficher ces valeurs.

Charger et Enregistrer un Tableau d'Octets

Dans ce contexte, il est également intéressant de savoir comment charger ou enregistrer un tableau d'octets dans respectivement à un fichier.

RépondrePositifNégatif

Sur l’Auteur

AvatarL’auteur n’a pas encore ajouté de brève description de profil.
Voir Profil

 

Sujets Connexes

Vos questions sur Askingbox

Info | 0 Commentaires

Signification de BTW ou OBTW?

Question | 1 Réponse

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.