سؤال

أنا أعمل على تطبيق قائم على TCP يعالج رسائل bitpacked، وهذا يعني: الرسائل المرسلة / المستلمة لا بايت محاذاة. على سبيل المثال، تمثل 3 بت الحقل 1، حيث قد تمثل 19 بت الحقول 2. سؤالي هو، هل يعرف أحد مكتبة C # التي يمكن أن تأخذ مجموعة من البايتات وتعيين / الحصول على مجموعة تعسفية من البتات داخل تلك البايتات؟ لقد رأيت وأنشأت أدوات مساعدة مماثلة في C / C ++ ولكني أحتاج إلى حل 100٪ C # ولا أريد إعادة اختراع العجلة مرة أخرى.

لقد نظرت إلى فئة Bitarray، لكنها لا تسمح بالإشارة إلى النطاقات التعسفية من البتات.

هل كانت مفيدة؟

المحلول

الدفع حل الشفرة - إنه مصدر مفتوح من الفئة Bitstream Calable من C #.

نصائح أخرى

أنا لست على علم بأي فصول BCL التي تقدم ما تريد. ولكن يمكنك استخدام عمليات bitwise (التحول، أو، أو، ...) لاستخراج مجالات اهتمامك.

على سبيل المثال، للحصول على حقل تبدأ من بت 2 مع حجم 5 بت استخدام:

int extract = (source & 0x7C) >> 2;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top