تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كود تحويل byte الىwords
#1
من يستطيع مساعدتي بكود يحول البايتات الى ورد
مثلا

01 23 45 67 89 ab cd ef 01 12 23 34 45 56 67 78

تتحول الى مصفوفة

l[0]=67452301

l[1]=efcdab89

l[2]=34231201

l[3]=78675645

يعني تقسم البايتات اربع اجزاء وتسويلهم تدوير
اني سويت هذه الفنكشن بس بيها طلع خطأ

الخطأ بالمكان الاصفر

هذه الخوارزمية الاصلية

convert bytes to words

l[i/4]=(l[i/4]<<<8+k[i]


هذه الاشارة >>> معناها التدوير لليسار
[k[i هذا المدخل الاول البايتات
الرد }}}
تم الشكر بواسطة:
#2

السلام عليكم ورحمة الله

أكيد تقصد DWord كما هو واضح من أمثلة النتائج التي في مثالك

هذه طريقة مختلفة قليلاً إن شاء الله تكون فيها الفائدة
PHP كود :
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click

    Dim b 
As Byte() = _
    
{&H01, &H23, &H45, &H67, &H89, &HAB, &HCD, &HEF, &H01, &H12, &H23, &H34, &H45, &H56, &H67, &H78}

    
Dim dw As Integer() = convBytesToDWords(b)

    
Dim s As New System.Text.StringBuilder
    
For 0 To dw.Length 1
        s
.AppendLine(String.Format("dw({0}) = {1} "iHex$(dw(i))))
    
Next
    MsgBox
(s.ToString)

End Sub


Private Function convBytesToDWords(As Byte()) As Integer()
    
Dim dw((b.Length 4) - 1) As Integer
    
For i1 0 To b.Length 1 Step 4
        
For i2 0 To 3
            dw
(i1 4) = (dw(i1 4) << 8) + (b(i1 i2))
        
Next
    Next
    
Return dw
End 
Function 

الرد }}}
تم الشكر بواسطة: rafah samih
#3
رحم الله والديك
ياااااارب يوفقك ,, راح اجرب هذه الطريقة .. والف شكرا

طيب اذا اريد البايتات تكون مختلفة
يعني مو نفسهة
كل مرة يدخل شكل البايتات ويكون ورد مختلفة
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم