منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كود تحويل byte الىwords
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
من يستطيع مساعدتي بكود يحول البايتات الى ورد
مثلا

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 هذا المدخل الاول البايتات

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

أكيد تقصد 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 

رحم الله والديك
ياااااارب يوفقك ,, راح اجرب هذه الطريقة .. والف شكرا

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