나는이 같은 오래된 코드 : 나는받지 못했습니다,비트 C#으로 혼란을 이동
private int ParseByte(byte theByte)
{
return theByte >> 7;
}
을하지만 :
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;
}
그것은 오랫동안 그리고 내가 같이 내려 트림 수 생각 첫 번째 함수와 동일한 값. 바이트에는 00000000 또는 10000000이 포함됩니다. 여기에 무엇이 누락되어 있습니까? 잘못된 연산자를 사용하고 있습니까?
그래, 내가 데이터를 보았던 16 진수 편집기는 그것을 10000000으로 표시했다. 나는 lsb를 먼저 표시했다고 생각한다? 그리고 BitArray에 혼란스러워서 운이 좋았나요? – scottm
@ scott2012 : 16 진수 편집기는 말할 수 없지만 BitArray가 작동하는 방식입니다. 최하위 비트는 인덱스 0에 있습니다. 코드의 짧은 비트로 확인할 수 있습니다. var bits = new BitArray 새로운 바이트 [] {0xf0}); // 11110000 for (int idx = 0; idx <= 7; idx ++) Console.WriteLine ("{0} : {1}", idx, bits [idx]); –