Ich habe einige alte Code wie folgt aus:Bitverschiebung Verwirrung in C#
private int ParseByte(byte theByte)
{
byte[] bytes = new byte[1];
bytes[0] = theByte;
BitArray bits = new BitArray(bytes);
if (bits[0])
return 1;
else
return 0;
}
Es ist lang und ich dachte, ich es so nach unten trimmen könnte:
private int ParseByte(byte theByte)
{
return theByte >> 7;
}
Aber ich bin nicht immer die gleichen Werte wie die erste Funktion. Das Byte enthält entweder 00000000 oder 10000000. Was fehlt mir hier? Benutze ich einen falschen Operator?
so, der Hex-Editor, den ich verwendet habe, um die angezeigten Daten als 10000000 zu betrachten. Ich schätze, es zeigte zuerst die LSB? und ich hatte Glück mit meiner Verwirrung im BitArray? – scottm
@ scott2012: Ich kann nicht für Ihren Hex-Editor sprechen, aber so funktioniert BitArray - das niedrigstwertige Bit ist bei Index 0. Sie können dies mit einem kurzen Codecode verifizieren: var bits = new BitArray (neues Byte [] {0xf0}); // 11110000 für (int idx = 0; idx <= 7; idx ++) Console.WriteLine ("{0}: {1}", idx, Bits [idx]); –