소스를 이렇게 ...
원리는 간단. 입력 받은 값을 그냥 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
계산기로 제대로 전환 되는가 확인해 보니, 잘 된다.