PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 16 Bit auf 2x 8Bit aufteilen....



Magge2k
06.07.2005, 18:21
Hi Leute...

wie Teile ich 16Bit auf 2x 8 Bit auf?

Ich dachte mir ich teile einfach meine 16Bit zahl durch 256 dies funktionierte auch...leider nur bedingt....am ende kam ich nicht auf 65535 sondern auf 65279 und bei dem wert 41054 auf 41055 machte er auch einen fehler

41054 ist ja A05E

und

41055 wäre ja dann logischer weise A05F doch ich bekomme A15F her aus?

Wer hat ne lösung wie man 16 Bit richtiger weise auf 2x 8Bit aufteilt?!?!


wäre sehr dankbar....

greez

PicNick
06.07.2005, 18:50
Da dürftest du ein Sprach/Technisches Problem haben, möglicherweise auch erst beim Wieder-Zusammensetzen.


HighByte = 16Bit / 256
Low Byte = 16Bit mod 256

16Bit = HighByte * 256 + LowByte


das stimmt schon so.

Je nach Sprache geht das ein bißchen anders.
Alle Zahlen müssen jedenfalls als unsigned definiert werden.

Magge2k
06.07.2005, 18:58
Hmm...OK

Stimmt....gut danke dann war ich schon auf dem Richtigen weg...
in einem anderen Tread habe ich folgende antwort bekommen...

higher = (unsigned char) (x>>8);
lower = (unsigned char) (x & 0x00ff);


mit diesem Befehl ging es...

greez und thx

PicNick
06.07.2005, 19:02
Hab grad' gesehen, daß dein gegner möglicherweise C++ heißt.
Zum byteweise verschicken solltest du das anders machen, um bei negativen Zahlen keinesfalls in die Bredouille zu kommen


union {
short w16Bit;
unsigned char b8Bit[2];
} both;


both.w16Bit = 41855;

Sende_byte( both.b8Bit[0] );
Sende_byte( both.b8Bit[1] );

dann kommt das drüben mundgerecht an.