22 Votos

Delphi/Lazarus: Mostrar Array de Bytes como Cadena de Valores HEX

Consejo de Delphieño | 02/04/2021 a las 19:23

Cuando se trabaja con Byte Arrays, tarde o temprano surge la cuestión de la visualización. Aquí tiene sentido generar los bytes individuales en forma hexadecimal como una cadena (string). En este consejo, quiero mostrarte una función que hace precisamente eso.

En el ejemplo, estamos usando la siguiente definición de una matriz de bytes:

type
  TByteArr = array of Byte;

La función recorre la matriz de bytes byte a byte y convierte cada valor de byte en el valor hexadecimal correspondiente:

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; 

Por un lado, la función se puede llamar solo con una matriz de bytes o, por otro lado, opcionalmente con un separador, que se escribe entre los bytes individuales para una mejor legibilidad.

var
  BA: TByteArr;
  s: string;
begin
  SetLength(BA, 3);
  BA[0] := 65;
  BA[1] := $41;
  BA[2] := %1000001; // esto solo funciona en Lazarus

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

En este ejemplo, primero creamos una matriz de bytes de 3 bytes de longitud y luego la llenamos con algunos valores. Luego usamos nuestra función para generar estos valores.

Cargar y Guardar Matriz de Bytes

En este contexto, también es interesante cómo cargar o guardar una matriz de bytes de respectivamente a un archivo.

ResponderPositivoNegativo

Sobre el Autor

AvatarEl autor aún no ha agregado una breve descripción del perfil.
Ver Perfil

 

Temas Relacionados

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.