AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Tutorial Arbeiten mit Dateien auf binärer Ebene
Thema durchsuchen
Ansicht
Themen-Optionen

Tutorial Arbeiten mit Dateien auf binärer Ebene

Ein Thema von Fehlersucher · begonnen am 22. Jan 2013 · letzter Beitrag vom 3. Feb 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#1

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 12:33
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 12:44
Du hast Recht, ich musste mir auch mal sagen, dass die Annahme, dass ein Byte aus 8 Bits besteht, eher eine Legende ist. Andere Systeme, andere Bytes.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#3

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 12:48
Ab Delphi 2009 sind das 2 Bytes, da String dort UTF-16 kodiert ist. Wer dann nicht bedacht hat, bei solchen Operationen mit SizeOf(Char) zu multiplizieren, hatte die Kappe auf. Die Foren waren seinerzeit voll mit solchen Beiträgen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 12:58
Nein, ich meine hier weniger die genutzten Bytes beim String, sondern aus wie viel Bits besteht ein Byte. Beim PC eben aus 8, aber bei anderen Systemen aus 4 oder 7 usw. Somit ist Byte kein eindeutige Größe.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 13:01
Sagt mal, sollen wirklich Zeichen zu Bits oder nicht eher Bytes zu Bits konvertiert werden. Und wieso überhaupt konvertieren? Verstehe ich nicht (mehr).
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#6

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 13:10
Sagt mal, sollen wirklich Zeichen zu Bits oder nicht eher Bytes zu Bits konvertiert werden. Und wieso überhaupt konvertieren? Verstehe ich nicht (mehr).
Da man es auch schlecht "konvertieren" kann, da es eh dasselbe ist und bleibt, ist dies eben nur das Unverständnis des TE's für Daten.
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#7

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 13:02
Du hast Recht, ich musste mir auch mal sagen, dass die Annahme, dass ein Byte aus 8 Bits besteht, eher eine Legende ist. Andere Systeme, andere Bytes.
Ein Byte hat per Definition immer 8 Bit, egal ob als Definitionsbyte oder als Type!

Chars können verschieden lang (durch unterschiedlich viele Bytes definiert) sein, aber nicht Byte.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 13:26
@Furtbichler

Der TE hat gefragt, der TE hat Möglichkeiten erhalten. Was er damit macht, ist sein Sache. Vielleicht führt das nirgendwo, vielleicht entwickelt er daraus den genialen Komprimieralgorithmus. Aber vielleicht macht er daraus nur Musik

Delphi-Quellcode:
procedure MachMusikAusDemString(s: string);
var
  i: Byte;
begin
  for i := 0 to Length(s) do
    if s[i] = '1then Windows.Beep(300 * Random(7), 100) else Sleep(100);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := '0100100001100001011011000110110001101111001000000101011101100101011011000111010000100001';
  MachMusikAusDemString(s);
end;
@MeierZwoo

Jajn: http://de.wikipedia.org/wiki/Byte
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#9

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 13:40
Wikipedia ist weder für mich noch für andere maßgeblich - Wikipedia ist keine Standardisierungs-Organisation! Und viele Artikel auf Wikipedia, vorallem im Bereich EDV, leben vom Wunschdenken der Autoren, ohne auf den Unterschied zwischen anerkannten Regeln der Technik und Wünschen hinzuweisen. Dem entsprechend habe ich den Artikel auch nicht gelesen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Tutorial Arbeiten mit Dateien auf binärer Ebene

  Alt 2. Feb 2013, 13:44
okey
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz