Aber damit es weiter geht, hier ein Konverter Text zu BitString:
Delphi-Quellcode:
function TextToBitStr(Str: string): string;
function ByteToBits(B: Byte): string;
var
i: Integer;
begin
Result := '';
for i := 0 to 7 do
Result := IntToStr(((B shr i) and 1)) + Result;
end;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(Str) do
Result := Result + ByteToBits(Ord(Str[i]));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(TextToBitStr('Hallo Welt!'));
end;
Ergebnis:
Code:
0100100001100001011011000110110001101111001000000101011101100101011011000111010000100001
Und damit das auch mit
Unicode oder WideString funktioniert:
Delphi-Quellcode:
function CharToBits(c: Char): string;
const
BITS_PER_BYTE = 8;
BITVALUES: array[Boolean] of char = ('0', '1');
var
i, BitWidth: integer;
AsNumber: Cardinal;
begin
BitWidth := BITS_PER_BYTE * SizeOf(c);
SetLength(Result, BitWidth);
AsNumber := Cardinal(c);
for i := BitWidth downto 1 do
begin
Result[i] := BITVALUES[(AsNumber and 1) = 1];
AsNumber := AsNumber shr 1;
end;
end;
function StrToBits(const s: string): string;
var
i: integer;
begin
Result := '';
for i := 1 to Length(s) do
Result := Result + CharToBits(s[i]);
end;
Ich bin nicht sicher, ob es auch Codierungen mit mehr als 4 Byte je Zeichen gibt. Falls ja, müsste man AsNumber halt als int64 deklarieren und entsprechend casten.