Hallo,
irgendwie komme ich grade bei einer eigentlich einfachen Sache nicht weiter
Ich babe einen String in den nur zwei Zeichen Vorkommen die '0' und die '1'. Dieser String besteht Quasi aus Bits, nun will ich diesen String wieder in Bytes verwandeln d.h. aus 01110111 soll wieder ein 'w' werden.
Delphi-Quellcode:
function DecodeBitString(ABits: string): string;
var
Bits: string;
MyByte: string;
i, c: integer;
B: Byte;
begin
Result := '';
Bits := ABits;
// Auffüllen es nicht mit einen ganzen Byte endet
i := Length(Bits) mod 8;
if i <> 0 then begin
c := 8 - i;
for i := 0 to c do begin
Bits := Bits + '0';
end;
end;
//c := Length(Bits) div 8;
c := 10; // Erste 10 Bytes lesen
for i := 0 to c do begin
MyByte := Copy(Bits, 1, 8);
Delete(Bits, 1, 8);
B := BitsToByte(MyByte);
Result := Result + Char(B);
end;
end;
function BitsToByte(ABit: string): Byte;
const
n : array[0..7]of byte = (128, 64, 32, 16, 8, 4, 2, 1);
var
i : integer;
begin
Result := 0;
for i := 0 to 7 do begin
if ABit[i] <> '0' then begin
Inc(Result, n[i]);
end;
end;
end;
Irgentwie komm ich da auf ganz andere Zahlen werte, und verdammt langsam ist das ganze auch noch. Vielleicht hat jemand von euch eine Idee wie es besser geht ?
thx, Björn