program BinaryToByteArray;
uses
SysUtils;
function IsBinaryChar(c: Char): Boolean;
begin
IsBinaryChar := (c = '0') or (c = '1');
end;
function BinaryToByteArray(const BinaryString: string): TBytes;
var
i, j, byteValue: Integer;
byteStr: string;
begin
if Length(BinaryString) mod 8 <> 0 then
begin
Writeln('Error: Binary string length must be a multiple of 8.');
Halt(1);
end;
SetLength(BinaryToByteArray, Length(BinaryString) div 8);
for i := 0 to High(BinaryToByteArray) do
begin
byteStr := Copy(BinaryString, i * 8 + 1, 8);
byteValue := 0;
for j := 1 to 8 do
begin
if not IsBinaryChar(byteStr[j]) then
begin
Writeln('Error: Invalid character "', byteStr[j], '" in binary string.');
Halt(1);
end;
byteValue := (byteValue shl 1) or (Ord(byteStr[j]) - Ord('0'));
end;
BinaryToByteArray[i] := byteValue;
end;
end;
var
BinaryString: string;
ByteArray: TBytes;
i: Integer;
begin
BinaryString := '10101110111010101110101001001011';
ByteArray := BinaryToByteArray(BinaryString);
Write('Byte Array: ');
for i := 0 to High(ByteArray) do
Write(ByteArray[i], ' ');
Writeln;
end.
(*
run:
Byte Array: 174 234 234 75
*)