1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| function FileToStrBit( const FileName: String ): String;
const
Convert: array['0'..'F'] of String =
('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001',
'', '', '', '', '', '', '', // caractères superflus du tableau, cf table ASCII
'1010', '1011', '1100', '1101', '1110', '1111'
);
var
AStream: TMemoryStream;
Buffer, Buffer2: PChar;
Cpt: Integer;
begin
Result := '';
AStream := TMemoryStream.Create;
try
// charger le fichier
AStream.LoadFromFile( FileName );
// allouer le buffer de lecture du fichier
GetMem( Buffer, AStream.Size );
// allouer le buffer de récupération du fichier au format HexaDecimal
// la taille doit être le double que la taille du fichier (chaque octet du fichier
// fait deux lettres hexadecimal) +1 pour inclure le #0 de fin de chaîne
GetMem( Buffer2, AStream.Size * 2 + 1 );
try
// récupérer les octets du fichier
AStream.Seek( 0, soFromBeginning );
AStream.ReadBuffer( Buffer^, AStream.Size );
// transformer les octets en leur représentation hexadécimal dans une chaîne
BinToHex( Buffer, Buffer2, AStream.Size );
// remplacer chaque caractère Hexadécimal par sa représentation binaire dans le chaîne résultat
for Cpt := 0 to ( AStream.Size * 2 - 1 ) do
Result := Result + Convert[Buffer2[Cpt]];
finally
FreeMem( Buffer );
FreeMem( Buffer2 );
end;
finally
AStream.Free;
end;
end; |
Partager