Laden...

Byte invertieren

Erstellt von Kuehner vor 15 Jahren Letzter Beitrag vor 15 Jahren 7.534 Views
K
Kuehner Themenstarter:in
489 Beiträge seit 2006
vor 15 Jahren
Byte invertieren

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!

1.200 Beiträge seit 2007
vor 15 Jahren

bitwise not? (~ operator)

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

U
1.688 Beiträge seit 2007
vor 15 Jahren

Hallo,

ich würde XOR 0xFF (^-Operator) nehmen.

K
Kuehner Themenstarter:in
489 Beiträge seit 2006
vor 15 Jahren

Ist mir auch gerade in den Sinn gekommen 😉 Danke!

49.485 Beiträge seit 2005
vor 15 Jahren

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

O
778 Beiträge seit 2007
vor 15 Jahren

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.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo onlinegurke,

auch wenn ich BitConverter oft selbst empfehle. Hier reicht es den Cast unchecked zu machen.

herbivore