Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi not und and Operator (https://www.delphipraxis.net/54744-not-und-operator.html)

SMO 12. Okt 2005 21:55

Re: not und and Operator
 
Zitat:

Zitat von Eichhoernchen
okay der fehler wäre durch mein Programm nicht aufgefallen weil nur nach der 0ten stelle gefragt wird, hab ich gar nicht dran gedacht, aber gut dann merk ich mir das aufjedenfall mit der variablen und wie es richig geht!
Dankeschön!

Bitte! Hmm, wenn dich immer nur das Bit an Position 0 interessiert, dann kannst du auch gleich die Compilermagic-Funktion "Odd" (ungerade) benutzen. Eine Zahl ist ja genau dann ungerade, wenn Bit 0 gleich 1 ist.

Zitat:

Edit: hab noch ne kleine Frage...ich frag einfach nochmal hier, gehört zwar nur noch bedinnt dazu:
Ich bin dabei ein kleines Verschlüsselungsprogramm zu schreiben, was die Daten in den letzten Bits des Farbcodes versteckt.
Ich glaube das nennt man Stenographie.
Ah ja, Steganographie. Stenographie ist Schnellschrift/Kurzschrift. ;)

So wie du das beschreibst, sollte es eigentlich klappen. Falls nicht, stimmt irgendetwas in deiner Implementierung nicht. Hier mal ein Beispiel, wie es funktionieren könnte:
Delphi-Quellcode:
// kodieren:
r1 := (r1 and $FE) or (DasByte and 1);
DasByte := DasByte shr 1;
g1 := (g1 and $FE) or (DasByte and 1);
DasByte := DasByte shr 1;
b1 := (b1 and $FE) or (DasByte and 1);
DasByte := DasByte shr 1;
// usw. bis g3



// dekodieren:
// var BitMaske: Byte;
BitMaske := 1;
DasByte := 0;
if Odd(r1) then DasByte := DasByte or BitMaske;
BitMaske := BitMaske shl 1;
if Odd(g1) then DasByte := DasByte or BitMaske;
BitMaske := BitMaske shl 1;
if Odd(b1) then DasByte := DasByte or BitMaske;
BitMaske := BitMaske shl 1;
// usw. bis g3

// alternativ wäre auch möglich:
BitMaske := 1;
DasByte := 0;
DasByte := DasByte or (BitMaske * (r1 and 1));
BitMaske := BitMaske shl 1;
DasByte := DasByte or (BitMaske * (g1 and 1));
BitMaske := BitMaske shl 1;
// usw.
// das erspart die if-Abfrage, benötigt aber eine Multiplikation
// müsste man testen, was in der Praxis schneller ist

Eichhoernchen 13. Okt 2005 17:46

Re: not und and Operator
 
Zitat:

Zitat von SMO
Ah ja, Steganographie. Stenographie ist Schnellschrift/Kurzschrift. ;)

...



Hmmm okay Odd aber ich wollte es ja mit den binär operatoren machen.

Hmm mein code schaut ähnlich aus, ich werde mich wohl irgendwo vertippt haben und ich finds net, aber danke!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
Seite 2 von 2     12   

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