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


arabmind
23-10-2006, 10:46 AM
انا اخوكم محمد
اريد طريقة مباشرة للتحويل من binary الى octal و العكس
و من hexidecimal الى binary و العكس
شكرا لكم

فهد النمر
14-11-2006, 04:05 PM
السلام عليكم ورحمة الله وبركاته...

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

Private Function Hex2Bin(ByVal HexValue As String) As String
Dim BinTable As Variant
Dim i As Integer, k As Long

Hex2Bin = ""
BinTable = Array("0000", "0001", "0010", "0011", _
"0100", "0101", "0110", "0111", _
"1000", "1001", "1010", "1011", _
"1100", "1101", "1110", "1111")
For k = 1 To Len(HexValue)
i = Val("&H" & Mid$(HexValue, k, 1))
Hex2Bin = Hex2Bin & BinTable(i)
Next
End Function

Private Function Bin2Hex(ByVal BinValue As String) As String
Dim BinTable, HexTable As String
Dim i As Integer, k As Long

Bin2Hex = ""
BinTable = " 0000 0001 0010 0011 0100 0101 0110 0111 1000" & _
" 1001 1010 1011 1100 1101 1110 1111"
HexTable = "0123456789ABCDEF"
If Len(BinValue) Mod 4 Then
BinValue = String$(Len(BinValue) Mod 4, "0") & BinValue
End If
For k = 1 To Len(BinValue) Step 4
i = InStr(BinTable, " " & Mid$(BinValue, k, 4))
Bin2Hex = Bin2Hex & Mid$(HexTable, (i \ 5) + 1, 1)
Next
End Function