كيفية قراءة بت واحد في صفيف بايت؟
سؤال
المشكلة هي أن لدي مجموعة من البايت مع 200 فهارس وأريد فقط التحقق من ذلك هو القليل الرابع من Myarray [75] هو الصفر (0) أو واحد (1).
byte[] MyArray; //with 200 elements
//check the fourth BIT of MyArray[75]
المحلول
القليل الرابع في العنصر 75؟
if((MyArray[75] & 8) > 0) // bit is on
else // bit is off
يتيح لك المشغل استخدام قيمة كقنعة.
xxxxxxxx = ?
00001000 = 8 &
----------------
0000?000 = 0 | 8
يمكنك استخدام هذه الطريقة لجمع أي من قيم البت باستخدام نفس التقنية.
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
32 = 00100000
64 = 01000000
128 = 10000000
نصائح أخرى
شيء مثل:
if ( (MyArray[75] & (1 << 3)) != 0)
{
// it was a 1
}
على افتراض أنك تعني 4 بت من اليمين.
وقد ترغب في التحقق System.Collections.BitArray
, ، فقط للتأكد من أنك لا تعيد اختراع العجلة.
private bool BitCheck(byte b, int pos)
{
return (b & (1 << (pos-1))) > 0;
}
لا تنتمي إلى StackOverflow