Stilfrage
-
Hallo,
Ich bin dabei, eine Klasse zu schreiben, die ein Bit-Feld enthält; ich werde sie für ein Programm zur Verschlüsselung von Textdateien verwenden.
Nur folgende Frage:
Da ich mit sehr kleinen Werten arbeite (1-8, bzw. 0&1) weiß ich nicht so recht, was für Funktionsrückgabetypen (auch Eingabe-) ich verwenden soll. Rein technisch gesehen brauche ich nicht mehr als die Wertemenge eines chars/unsigned chars. Allerdings erscheint mir das nicht schön. Was sagen die Erfahrenen Programmierer dazu?Danke im Voraus für die Antworten!
EDIT: Die Klasse verwendet ein Bitfeld von 8 einzelnen Bits.
-
Hm. Hmmm. Nimm ein "int" würde ich sagen, bzw. natürlich ein unsigned int (wenn die Werte nie nie niemals negativ sein können).
-
... oder ein unsigned short ?
Mikey.
-
Wenn du nie mehr als acht Bit benötigst, wieso ist ein char dann unschön? Rein optisch oder hast du andere Gründe. Optisch kannst du dir ja per Typendefinition aushelfen!
typedef unsigned char bitfield8; // ...grüße
-
Ah, ok, jetzt wurden mir genau alle Optionen angeboten, an die ich gedacht hatte

Ne, rein optisch. Könnte ja komisch aussehen, wenn das jemand liest, und der wundert sich dann: "Hey, wieso zum Henker gibt deine Funktion ein Char zurück?"
Naja, wurscht. Ich denk ich nehm unsigned short, das dürfte am wenigsten komisch aussehen
und ich brauch keine Typkonvertierung, wenn ich das zurückgegebene als Zahl ausgeben möchte...Danke für die Antworten

-
Ich würd uchar nehmen, denn das hat ja genau die Bedeutung "1 Byte".
-
uchar == unsigned char?
Benutz ich, wo es geht.
Nur habe ich beispielsweise die Memberfunktion setbit(unsigned int/short/char bnum, unsigned int/short/char value), welche ein bit bnum auf value setzt. Nur um eventuelle Misverständnisse zu vermeiden, würde ich hier statt dem kleinstmöglichen, also unsigned char, lieber unsigned short verwenden.
Oder würde nur ein Neuling es falsch verstehen, wenn ich dort unsigned chars benutzen würde?
-
Wurde zwar schon gesagt, mach halt ein typedef und nenns unsinged short short oder was weiss ich...und um eventuelle Missverständnisse zu vermeiden gibts Docus oder Kommentare

-
Hm. OK

thx !
-
wie wärs mit nem std::bitset?
-
Ja, hab mir schon gedacht, dass das mit bitset geht.
Nur bin ich gerade dabei, ein Buch durchzuarbeiten, und da kommt bitset relativ spät. Für ne vorläufige Lösung wollte ich deswegen eine Class mit Bitfield definieren. Jetzt ist eh alles wurscht, weil ich gemerkt hab, dass die Class vollkommen unnütz ist, da man ja problemlos per bitwise operators die bits eines beispielsweise chars ändern/ausgeben kann, und ich deswegen nicht alles kompliziert auf ein bitfield umrechnen muss