06. august 2003 - 10:24Der er
9 kommentarer og 1 løsning
At se bit-værdien af en stream eller et JPEG billede
Jeg har lavet et program, som sender et JPEG billede fra en computer til en anden via UDP (NMUDP komponenten)...Det gøres ved at lave billedet om til en stream (Jpg.SaveToStream(DataStream)). Det jeg ønsker er en komponent eller en funktion som kan lave en stream eller et JPEG billede om til bits, så jeg kan se værdien som bit i stedet... Nogen idéer?
0 og 1 taller er maskin kode, det kan du nok ikke lige få frem udenvidere, men du kan som borrisholt siger læse hver bit som dens svarende integer værdi.
Da denne kode konverterer et binært tal til integer, er det naturligvis også muligt den anden vej :-)
function Bin2Dec(Bin: String): Integer; var Negativ, IsBin: Boolean; I, J, K: Integer; begin Result := 0; IsBin := true; if Length(Bin) < 1 then Exit; if Pos('-', Bin) = 1 then begin if Length(Bin) < 2 then Exit; Negativ := true; Delete(Bin, 1, 1); end; for I := 1 to Length(Bin) do if IsBin then IsBin := Pos(Bin[I], '01') > 0; for I := 1 to Length(Bin) do begin K := 1; for J := 1 to Length(Bin) - I do K := 2 * K; Result := Result + StrToInt(Bin[I]) * K; end; if Negativ then Result := Result * -1; end;
Her har du et eksempel på at læse en stream og få vist hvert enkelt tegn som binær...
function ByteToBin(b : byte) : string; var n : integer; begin Result := ''; for n := 7 downto 0 do if (b and (1 shl n)) <> 0 then Result := Result + '1' else Result := Result + '0'; end;
procedure TForm1.Button1Click(Sender: TObject); var Buf : byte; fs : TFileStream; begin fs := TFileStream.Create('test.txt',fmOpenRead); while fs.Read(Buf,1) <> 0 do ShowMessage(Char(Buf) + ':' + ByteToBin(Buf)); fs.Free; end;
Jeg takker doc404.... Det var lige det jeg manglede...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.