у меня есть какой-то старый код, как это:бит сдвига путаницы в 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;
}
Это долго, и я полагал, что я мог бы обрезать его вниз, как это:
private int ParseByte(byte theByte)
{
return theByte >> 7;
}
Но, я не получаю те же значения, что и первая функция. Байт либо содержит 00000000, либо 10000000. Что мне здесь не хватает? Я использую неправильный оператор?
, так что в шестнадцатеричном редакторе я использовал данные, отображаемые как 10000000. Наверное, сначала он отобразил lsb? и мне повезло с моей путаницей в BitArray? – scottm
@ scott2012: Я не могу говорить за ваш шестнадцатеричный редактор, но так работает BitArray - младший бит находится в индексе 0. Вы можете проверить это коротким кодом: var bits = new BitArray (новый байт [] {0xf0}); // 11110000 for (int idx = 0; idx <= 7; idx ++) Console.WriteLine ("{0}: {1}", idx, bits [idx]); –