WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 22.08.2002, 11:02   #1
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard c++ eigene datentypen

das vorige posting war wohl ein wenig zu viel auf einmal ...

drum meine frage: wie kann ich zb einen datentyp int14 (also mit 14 bits) verwenden bzw erzeugen und auch in einen filestream schreiben?

danke für eure hilfe
it00x30 ist offline   Mit Zitat antworten
Alt 22.08.2002, 11:16   #2
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

16 bits verwenden, ansonsten das oberste Bit isolieren und 2 (bits) nach rechts schieben, den int16 Wert mit vierzehn gesetzten Bits (Maske) ver-und-en und das isolierte Bit 15 (=16.Bit=Vorzeichenbit), das bereits Bit 13 ist mit dem int16/int14 Wert ver-oder-n.

Um bitgenau in einen Filestream schreiben zu können, brauchst Du eine eigene Filestreamklasse, die die letzte Bitposition und das letzte Byte vorrätig hält als static Variable. Dann eben den int16 Wert übergeben, kopieren, die Kopie an die Bitposition des letzten gepufferten Bytes des Filestreams hängen (bitmäßiges ODER) sowie die zweite Hälfte (=1-2 Bytes, jedenfalls aus der Originalübergabevariable = der übergebene Parameter int16 bzw. int14) ebenso shiften und in den Filestreampuffer schreiben. Der Flush passiert dann sowieso, wenn ein Pufferüberlauf eintritt oder die Datei geschlossen wird.

Das ist das Einzige, was ich sehe, wie es funktionieren müßte.
kikakater ist offline   Mit Zitat antworten
Alt 22.08.2002, 13:31   #3
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard

danke für die hilfe, werd mir das ganze mal durchüberlegen (müssen ...)

das mit der eigenen streamklasse kann ich wohl kaum verhindern, mein problem dabei ist, dass ich x verschiedene solche datentypen habe (angefangen von int27 über uint5 und so weiter) am besten wird sein, ich arbeite immer mit einem long (der sollte doch 4 byte haben so weit ich mich entsinne), damit ich zumindest einmal immer vom selben typ ausgehen kann ...
it00x30 ist offline   Mit Zitat antworten
Alt 22.08.2002, 14:25   #4
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Der Datentyp intxy muß eine Struktur sein bestehend aus einem long oder longlong - nämlich dem Datenwert - und einem weiteren Feld - der Bitbreite mit Werten von 1 bis 64 - sowie einem Feld Signed, das lediglich True oder False sein kann.
kikakater ist offline   Mit Zitat antworten
Alt 27.08.2002, 12:03   #5
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von it00x30
angefangen von int27 über uint5 und so weiter)
Welchen Grund hattest Du für die Verwendung dieser eigenen Datentypen?
Solltest Du riesige Mengen an Daten abspeichern wollen, wäre es am einfachsten, später ein Komprimierungsprogramm (ZIP) drüberlaufen zu lassen.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 27.08.2002, 16:18   #6
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard

@flink

ich muss einen konverter schreiben, der ascii in ein binärformat convertiert - mit einem fixen protokoll, das dann über funk verschickt werden kann. darum die platzeinsparungen im protokoll und die komischen datentypen.

ich bin dabei die sache zu lösen indem ich im programm selber mit normalen ints arbeite und das schreiben der datei einem eigenen stream überlasse, der weiss welches bit das letzte fix gesetzte ist. dort kann ich dann mit ein paar bitshifts und bitwise ors die neu hinzukommenden datenfelder anhängen und wenn der puffer voll ist, wird das file geschrieben ...
it00x30 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:18 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag