不用系统函数,怎么编写将十进制转成十六进制与十六进制转成十进制的函数?

不用系统函数,怎么编写将十进制转成十六进制与十六进制转成十进制的函数?请写代码?
---------------------------------------------------------------

'仅限非负整数
'十进制数转换成二进制数
Public Function DecToBin(ByVal value As Integer) As String
If value = 0 Then Return "0"

Dim tempValue As Integer = value
Dim tempString As String = ""

Dim modValue As Integer
Do
tempString += CStr(tempValue Mod 2)
tempValue = tempValue \ 2
Loop While (tempValue <> 0)

Dim i As Integer
Dim returnChars As Char() = tempString.ToCharArray()
Dim returnString As String = ""
For i = tempString.Length - 1 To 0 Step -1
returnString += returnChars(i)
Next

Return returnString
End Function

'二进制数转换成十进制数
Public Function BinToDec(ByVal value As String) As Integer
Dim i As Integer
Dim returnValue As Integer = 0
For i = value.Length - 1 To 0 Step -1
returnValue += Val(value.Chars(value.Length - 1 - i)) * (2 ^ i)
Next

Return returnValue
End Function

'任意二进制数转换成十六进制数
Public Function BinToHex(ByVal value As String) As String
If value.Length Mod 4 <> 0 Then
value = value.PadLeft(4 * (value.Length \ 4 + 1), "0"c)
End If

Dim i As Integer
Dim returnString As String = ""
Dim tempString As String
For i = 0 To value.Length \ 4 - 1
tempString = value.Chars(4 * i) + value.Chars(4 * i + 1) _
+ value.Chars(4 * i + 2) + value.Chars(4 * i + 3)

returnString += GetHexChar(tempString)
Next

Return returnString
End Function

'特殊情况:4位二进制数转换成十六进制数
Public Function GetHexChar(ByVal value As String) As String
Dim tempValue As Integer
tempValue = BinToDec(value)

If tempValue < 10 Then
Return CStr(tempValue)
Else
Select Case tempValue - 10
Case 0
Return "A"
Case 1
Return "B"
Case 2
Return "C"
Case 3
Return "D"
Case 4
Return "E"
Case 5
Return "F"
End Select
End If
End Function

'十六进制数转换成二进制数
Public Function HexToBin(ByVal value As String) As String

End Function

'十进制数转换成十六进制数
Public Function DecToHex(ByVal value As Integer) As String
Return BinToHex(DecToBin(value))
End Function

'十六进制数转换成十进制数
Public Function HexToDec(ByVal value As String) As Integer
Dim i As Integer
Dim returnValue As Integer = 0
For i = value.Length - 1 To 0 Step -1
Dim num As Integer = 0
Select Case value.Chars(value.Length - 1 - i)
Case "0"c To "9"c
num = Val(value.Chars(i))
Case "A"c
num = 10
Case "B"c
num = 11
Case "C"c
num = 12
Case "D"c
num = 13
Case "E"c
num = 14
Case "F"c
num = 15
End Select

returnValue += num * (16 ^ i)
Next

Return returnValue
End Function

---------------------------------------------------------------

你的程序中要调用的函数就是最后两个函数 DecToHex、HexToDec

你为什么要自己写函数呢?不是有个系统函数叫Hex的(DEC-HEX)?

我上面写的函数没有特别的容错性处理,大概不碍事,只要传递的是正确的参数就行了。

祝你好运兄弟

Published At
Categories with Web编程
Tagged with
comments powered by Disqus