进制数换算

博客给出了多种进制数转换的函数实现。包括二进制转十进制、二进制转十六进制、4位二进制转十六进制、十进制转二进制、十六进制转十进制等函数,代码中使用循环、条件判断等逻辑完成转换,且部分函数仅限非负整数转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

'二进制数转换成十进制数
Public Shared 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 Shared 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 Shared 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 Shared 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 Shared 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值