Word in Hi- und Lo-Byte zerlegen
-
Hallo Freunde,
hab hier mal eine Lösung wie man einen übergebenen Wert vom Typ "unsigned short" (Word) in zwei Bytes zerlegen kann. (Hi- und Lo-Byte)
Wisst ihr evtl. eine elegantere Lösung?
// Teilt das Word in ein Hi- und Lo-Byte void Chaping::Word2HLBytes(unsigned short Value, unsigned char %HiByte, unsigned char %LoByte) { unsigned short tmp; tmp = Value & 0x00FF; LoByte = (unsigned char)tmp; tmp = Value & 0xFF00; tmp = tmp >> 8; HiByte = (unsigned char)tmp; }
Grüße
Stefan
-
Eleganter geht es nur, wenn du tmp weglässt.
LoByte = (unsigned char) (Value & 0xFF);
HiByte = (unsigned char) ((Value & 0xFF00) >> 8;
-
ungetestet ... würde dafür lieber Makros nehmen
#define LOW(x) ((x) & 0xff) #define HIGH(x) (((x) & 0xff00) >> 8) // .... unsigned char low = LOW(0xCAFE); unsigned char hight = HIGH(0xCAFE);
-
Danke für die schnelle Antwort, sind beide gut!
-
Statt
HiByte = (unsigned char) ((Value & 0xFF00) >> 8);
sollte
HiByte = (unsigned char) (Value >> 8);
auch reichen.
-
@Mokel: Makros würde ich nicht nehmen, zu unsicher das ganze.
-
in wiefern ist das unsicher?
-
Hallo,
mit BitConverter:
// in bytes sind dann an Position 0 und 1 die einzelnen Bytes array<Byte>^bytes = BitConverter::GetBytes( ushortarg );
MfG,
Probe-Nutzer