소스를 이렇게 ...
원리는 간단. 입력 받은 값을 그냥 16으로 나누기를 반복 하면서 나머지 값을 차곡 차곡 쌓아, 최종적으로 나눌값이 16 보다 작아질때 까지 반복하면 끝.
Private Sub Command1_Click()
If IsNumeric(Text1.Text) Then
Text2.Text = Dec2Hex(Val(Text1.Text))
End If
End Sub
Public Function Dec2Hex(DecNum As Long) As String
Dim hexv As String, na As Long
hexv = ""
Do While DecNum > 0
na = DecNum Mod 16
Select Case na
Case 10
hexv = "A" + Trim(hexv)
Case 11
hexv = "B" + Trim(hexv)
Case 12
hexv = "C" + Trim(hexv)
Case 13
hexv = "D" + Trim(hexv)
Case 14
hexv = "E" + Trim(hexv)
Case 15
hexv = "F" + Trim(hexv)
Case Else
hexv = Str(na) + Trim(hexv)
End Select
If DecNum >= 16 Then
DecNum = Int(DecNum / 16)
Else
hexv = "0" + Trim(hexv)
Exit Do
End If
Loop
If Len(hexv) > 1 And (Len(hexv) Mod 2 = 1) Then
Dec2Hex = Mid(hexv, 2)
Else
Dec2Hex = hexv
End If
End Function
간단하게 테스트
10진수 "10" 이 16진수 "0A" 로 변환 되었다.
복잡한 숫자로 OK
계산기로 제대로 전환 되는가 확인해 보니, 잘 된다.





