Hallo,
Welcher ist der schnellste und einfachste Weg, ein Byte zu invertieren? Gibt es dafür einen bestimmten Befehl?
Bsp: byte test = 0xAA //10101010
Invert(test) // 01010101
Danke!
bitwise not? (~ operator)
Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!
YARRRRRR!
Hallo Kuehner,
das ~ würde ich dem ^ vorziehen.
Allerdings liefern die Bit-Operationen auf Bytes einen In32 als Ergebnis. Man muss also casten, wenn man (wieder) ein Byte will.
herbivore
Hm, da ~ und ^ beide Int32-Operatoren sind, wird vor allem auch der Eingangswert als Int32 impliziert konvertiert, d.h., aus 01010101 wird dann 00000000000000000000000001010101. Das wiederum invertiert ist 11111111111111111111111110101010, was negativ sein dürfte und beim Konvertieren nach Byte schöne Konvertierungsfehler bringt. Die beste Variante wäre wohl, sich den Int32 per Bitconverter in ein Bytearray kloppen zu lassen und dann einfach nur das entsprechende Byte auszuwerten.
Hallo onlinegurke,
auch wenn ich BitConverter oft selbst empfehle. Hier reicht es den Cast unchecked zu machen.
herbivore