سؤال

ما هي أفضل طريقة لتخزين 4 بت من بايت في vb.net؟ حيث أفضل الوسائل:

  • الطريقة الأكثر وضوحا للتخزين من نوع البايت.
  • الأسهل للعمل مع أثناء إجراء عمليات bitwise.
  • التحويل المباشر من البتات إلى أنواع أخرى.

تخزينهم في bitarray عبر مُنشئه يعكس ترتيب البتات. هذا يعني أن محاولة الحصول على قيمة البت الأول ستتطلب البحث عن هذه القيمة في الإدخال الأخير في Bitarray. إن تخزينهم في مجموعة من المنطقيين لا يقدم طريقة مباشرة للتحويل من البايت ، ويعوق التحويل إلى أنواع أخرى.

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

المحلول

يمكنك دائمًا إنشاء فصل مخصص خاص بك إذا كنت لا تحب كيف BitArray الأعمال:

Public Class MaskedByte

    Private innerValue As Byte
    Private mask As Byte

    Public Sub New()
        MyBase.New
    End Sub

    Public Sub New(ByVal value As Byte, ByVal mask As Byte)
        MyBase.New
        innerValue = value
        Mask = mask
    End Sub

    Public Property Value As Byte
        Get
            Return (innerValue And Mask)
        End Get
        Set
            innerValue = value
        End Set
    End Property

    Public Property Mask As Byte
        Get
            Return mask
        End Get
        Set
            mask = value
        End Set
    End Property

End Class

ثم ، للاستخدام:

Dim myMaskedByte As MaskedByte
myMaskedByte.Mask = &HF0
myMaskedBytef3.Value = someValue

(لا أعرف vb.net ، لكنني أعتقد أن هذا صحيح).

نصائح أخرى

وأنا أتفق مع الاحتفاظ بهم في بايت ، ولكن ليس من الواضح لماذا ؟؟؟ تريد واحدة من القوارب ... هذا المثال يضع كلا من القلائم من البايت في صفائف مختلفة

'Test Data
'create a byte array containing EVERY possible byte value
Dim b(255) As Byte
For x As Integer = 0 To b.Length - 1
    b(x) = CByte(x)
Next

Dim bMS(255) As Byte 'most sig.
Dim bLS(255) As Byte 'least sig.
Const mask As Byte = 15
'
For x As Integer = 0 To b.Length - 1
    bMS(x) = b(x) >> 4
    bLS(x) = b(x) And mask
Next

احتفظ بها في البايت:

Dim b1 As Boolean = (value And &H01) = 1
Dim b2 As Boolean = (value And &H02) = 1
Dim b3 As Boolean = (value And &H04) = 1
Dim b4 As Boolean = (value And &H08) = 1

مسح البتات أمر بسيط أيضًا:

Dim value As Byte = (oldValue And &HF0)

إذا كنت تريد الاحتفاظ بأقل أهمية ، فأنت ببساطة عكس قيمة السداسي:

Dim value As Byte = (oldValue And &H0F)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top