10진수를 16진수로 바꾸는 기능이 있으면, 16진수를 10진수로 바꾸는 기능도 있어야지.
폼은 뭐 간단히 디자인하고.
Private Sub Command1_Click() Text2.Text = Hex2Dec(Text1.Text) End Sub Public Function Hex2Dec(HexNum As String) As Double Dim DecNum As Double Dim getHex As String getHex = "0123456789ABCDEF" For i = 1 To Len(HexNum) If InStr(getHex, Mid$(HexNum, i, 1)) > 0 Then DecNum = (DecNum * 16) + InStr(getHex, Mid$(HexNum, i, 1)) - 1 Else MsgBox ("16진수 값이 아닙니다.") End If Next i Hex2Dec = DecNum End Function
소스는 심플... 하지만 조금 이해하기 난해하긴 함.
가장 쉬운 방법은 그냥 문자열을 하나씩 잘라서 ...
if getChar = "A" then
DecNum = (DecNum * 16) + 10
else if getChar = "B" then
DecNum = (DecNum * 16) + 11
.
.
.
end if
이런 식으로 비교해서 값을 계산하면 됨.
이걸 If 문 대신, 순서대로 나열된 비교 문자열을 가지고 inStr() 함수를 이용해 ABCD... 값을 변환 한것 일뿐, 다를 것은 없음. ("A" 는 비교 문자열의 11번째에 위치함.)
요렇게 하고, 값 변환 테스트.
일단 간단히 "A" 를 변환해봄. 10으로 잘 나옴.
당연히 큰 값도 잘 나옴.