Feedback

C# - Setzt ein bestimmtes Bit in einem Byte

Veröffentlicht von am 5/20/2011
(0 Bewertungen)
Setzt ein angegebenes Bit in einem übergebenen Byte. Als Parameter werden ein Byte (0x5A) und eine Bitnummer (0-7) übergeben. Returnwert ist ein Byte mit dem neuen Wert. Die Fehlerbehandlung ist nur auf das Notwendigste beschränkt.

        /// <summary>
        /// Setzt ein bestimmtes Bit in einem Byte.
        /// </summary>
        /// <param name="b">Byte, welches bearbeitet werden soll.</param>
        /// <param name="BitNumber">Das zu setzende Bit (0 bis 7).</param>
        /// <returns>Ergebnis - Byte</returns>
        public static byte SetBit(byte b, int BitNumber)
        {
            //Kleine Fehlerbehandlung
            if (BitNumber < 8 && BitNumber > -1)
            {
                return (byte)(b | (byte)(0x01 << BitNumber));
            }
            else
            {
                throw new InvalidOperationException(
                "Der Wert für BitNumber " +  BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
            }
        }
Abgelegt unter Byte, Bit, Prüfen.

1 Kommentare zum Snippet

ikue schrieb am 8/31/2016:
Ein kleiner Erweiterungsvorschlag (basierend auf dem .NET Delphi-Dialekt Oxygene von Remobjects):

class method sup.SetzeBit(b: Byte; BitNumber: Integer; Zielzustand:Boolean): Byte;
begin
// Kleine Fehlerbehandlung
if (BitNumber < 8) and (BitNumber > -1) then
begin
if Zielzustand then
exit Byte(b or Byte(1 shl BitNumber))
else
exit Byte(b and not Byte(1 shl BitNumber))
end
else begin
raise new InvalidOperationException('Der Wert für BitNumber ' + BitNumber.ToString() + ' war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)');
end;
end;

Dies würde ermöglichen, Bits sowohl ein- als auch auszuschalten.
 

Logge dich ein, um hier zu kommentieren!