Private Sub Form_Load()
Text1.Text = Decimal2Binary(9)
End Sub
' ตัวแปร Dec จะเป็นตัวแปรที่รับค่าในการเรียกใช้งานฟังค์ชั่น
' และส่งค่าคืนกลับเป็นแบบ String
Function Decimal2Binary(Dec As Integer) As String
' เก็บค่าคำตอบของการหารเอาเศษ (MOD)
' อันนี้แล้วไม่จำเป็นต้องใช้ก็ได้ ให้เอาชื่อฟังค์ชั่นตัวมันเองมาเก็บเป็นคำตอบแทนน่ะครับ
Dim Bit As String
' DO WHILE ... เงื่อนไขเป็นจริงจะวนรอบ ... เท็จเมื่อไหร่ก็จะออกจากลูป
Do While (Dec > 0)
Bit = (DecMod 2) & BitDec = Dec \ 2
Loop
' คืนค่ากลับไป (Return)
Decimal2Binary = Bit
End Function
Private Sub Form_Load()
' การแปลงเลขฐาน 10 (ค่า 127) ให้มีขนาดจำนวน 16 บิต
Text1.Text = Decimal2BinaryFix(127, 16)
End Sub
' Optional หมายถึง หากไม่ส่งค่าใดๆมาฟังค์ชั่น ให้ยึดค่าที่กำหนดไว้ หรือ 8 เป็นค่าเริ่มต้นเสมอ
Function Decimal2BinaryFix(Dec As Integer, OptionalNumBit As Byte = 8)
' เก็บค่าคำตอบของการหารเอาเศษ (MOD)
' อันนี้แล้วไม่จำเป็นต้องใช้ก็ได้ ให้เอาชื่อฟังค์ชั่นตัวมันเองมาเก็บเป็นคำตอบแทนน่ะครับ
Dim Bit As String
Dim i As Byte ' นับจำนวนบิต ... BYTE มีค่าเท่ากับ 0 - 255 น่ะครับ ... พี่น้อง
' ==============================================================
' FOR ... NEXT
' เนื่องจากลูป For อาศัยการการนับเป็นเงื่อนไข มีค่าเริ่มต้น - สิ้นสุด และ Step ในการนับ
' ดังนั้นเราสามารถกำหนดจำนวนบิตที่ต้องการ เพื่อนำมาทำเป็นเงื่อนไขได้โดยตรง
For i = 1 To NumBitBit = (Dec Mod 2) & BitDec = Dec \ 2
Next
' คำตอบที่ส่งกลับไปสำหรับคำสั่งวนรอบด้วย FOR ... อาศัยจำนวนบิตเป็นเงื่อนไข (NumBit) แทน
Decimal2BinaryFix = BitEnd Function
แม้ว่ามันจะเกิดการแปลงเลขฐานเสร็จไปเรียบร้อยแล้ว แต่ลูป Forจะยังคงทำงานต่อไปอย่างต่อเนื่องจนกว่าจะนับจำนวนบิตครบหมด (i นับได้เท่ากับ NumBit) หลังจากนั้นเราก็สามารถจะนำไปใช้ในการแปลงจากเลขฐาน 2 ไปเป็นฐาน 16 ได้อย่างไม่ยากเย็นนักเลยครับ ... พี่น้อง (แบะๆ ... ไว้ให้ก่อน ใช้ For และ Select Case ต่อได้เลย)