Gast
#1238979
Hallo Leute, ich habe ein Word(16Bit) und möchte diese Daten in zwei Bytes verteilen, mit Hilfe von C. Kennt jemand solche Befehle? Gruß Steve
|
Anzeige
|
Word in zwei bits verteilen
Gast
#1238979
Hallo Leute, ich habe ein Word(16Bit) und möchte diese Daten in zwei Bytes verteilen, mit Hilfe von C. Kennt jemand solche Befehle? Gruß Steve Oh ja, das ist garnicht einmal so schwer. Es gibt in C sogenannte "Shift Operatoren", außerdem auch noch logische Operationen wie z.B. die "Und Verknüpfung".
Matthias
Gast
#1238984
Ungetested, gibt mehrere Varianten.
Gast
#1239000
> Word in zwei bits verteilen ich glaube das geht! http://de.wikipedia.org/wiki/Microsoft_Word ,vielmehr isses nicht. :) union wäre auch ein Weg, ganz ohne Operationen.
Gast
#1239012
jep. Die Sache mit der Verpointerung und die union sind gute Ideen :-)
Gast
#1239021
upps soory habe bytes gemeint. Und wie mache ich aus zwei Bytes eine Word?
Gast
#1239026
Das kommt wiederum wie die Bytes im Speicher verteilt sind. Wenn sie auseinander stehen, musst du kopieren, wenn sie zusammen und in der richtigen Reihenfolge sind, siehe "union"
Gast
#1239150
irgend wie blicke ich das mit union nicht. Habt Ihr ein Beispiel Hi,
word zu bytes:
bytes zu word:
Viel Spaß damit.
Gast
#1239217
Hi, ich hänge mich hier einfach mal ran. Habe folgendes "Problem": ein Wert vom Typ uint32_t, der aber nur Werte zw. 0 und 100000 annehmen kann (3 byte genügen), möchte ich zusammen mit einem uint8_t Wert in einem uint32_t speichern. Wie mach ich das am elegantesten? Danke und Gruss Sumynona wrote:
> jep. Die Sache mit der Verpointerung und die union sind gute Ideen :-)
Ich denke nicht. Die "Verpointerung" ist ein schlimmes Beispiel
nicht-portabler Programmierung - man tritt sich für nichts eine schöne
Abhängigkeit vom Bytesex der CPU ein (little- oder big-endian). Toll.
Wenn Du sicher sein willst, wo im Ergebnis das low- und wo das highbyte
steht unabhängig von der CPU, dann verwende die shift-Variante.
-Michael
Gast
#1239255
> ich hänge mich hier einfach mal ran. Habe folgendes "Problem": > ein Wert vom Typ uint32_t, der aber nur Werte zw. 0 und 100000 annehmen > kann (3 byte genügen), möchte ich zusammen mit einem uint8_t Wert in > einem uint32_t speichern. Wie mach ich das am elegantesten? Hi heinz, für Deinen ersten Wert (100000) brauchst Du 17 Bits. Du hast dann noch 7 Bits zur freien Verfügung... das kannst Du mit einer Struktur erledigen:
Gruß Martin
Gast
#1239410
Hallo Marcin, diese Syntax mit dem : kannte ich noch gar nicht. Geht das echt? Gruß heinz
Gast
#1239513
Hallo Heinz, http://en.wikipedia.org/wiki/C_syntax#Bit_fields hier kannst Du die kleine 'Lücke' in der Syntax wieder schliessen ... Martin Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|