Ver Mensaje Individual
  #2  
Antiguo 09-09-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Los valores binarios no se pueden entender a simple vista, no se pueden pasar a caracteres porque no lo son, a no ser que te refieras a pasarlos a caracteres hexadecimales. En ese caso aquí tienes esta función que ya publiqué como parte del código de una unit para escanear y buscar en todo el registro de Windows con la API:

Código Delphi [-]
// Convierte un buffer binario en una cadena de números hexadecimales
function BinToStr(Bin: PBYTE; BinSize: DWORD; Str: PCHAR; var StrSize: DWORD): boolean;
var
  i: DWORD;
begin
  if Str <> nil then
  begin
    if StrSize >=  2*BinSize + 4 then
    begin
      for i:=0 to BinSize-1 do
      begin
        Str^:= CHAR(($0F and (Bin^ shr 4)) + 48);
        (Str+1)^:= CHAR(($0F and Bin^) + 48);
        if Str^ > '9' then inc(Str^, 7);
        if (Str+1)^ > '9' then inc((Str+1)^, 7);
        inc(Bin); inc(Str, 2);
      end;
      Str^:= #10; inc(Str);
      Str^:= #13; inc(Str);
      Str^:= #0;
      Result:= true;
    end
    else Result:= false;
  end
  else
  begin
     StrSize:= 2*BinSize + 4; // '\0' y dos caracteres de mas para el final en "\r\n"
     Result:= true;
  end;
end;

Esta función realiza la conversión o te devuelve la cantidad de memoria a reservar para el buffer (Str)


Saludos.

Última edición por Casimiro Notevi fecha: 09-09-2015 a las 21:04:37.
Responder Con Cita