تخزين 4 بت من بايت في vb.net
سؤال
ما هي أفضل طريقة لتخزين 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)
لا تنتمي إلى StackOverflow