二进制转十进制在VB中可通过以下两种主要方法实现:
一、按位权展开法(推荐)
通过逐位计算二进制数的权重并累加,适用于处理任意长度的二进制字符串。
实现步骤:
输入校验:
检查输入字符串是否仅包含"0"和"1"。
遍历字符串:
从右至左(最低位优先)逐位处理,每位的权重为2的位数减1次方(如第1位权重为1,第2位权重为2,依此类推)。
累加结果:
将每位数字乘以对应权重后累加,最终结果即为十进制值。
示例代码:
```vb
Public Function BIN_to_DEC(ByVal Bin As String) As Long
Dim n As Integer, s As Long, i As Integer, w As Integer
n = Len(Trim(Bin)) ' 去除首尾空格并获取长度
s = 0 ' 初始化结果
For i = n To 1 Step -1
w = Val(Mid(Bin, i, 1)) ' 将字符转换为数值(非法字符视为0)
s = s + 2 ^ (n - i) * w ' 按位权展开累加
Next i
Return s ' 返回十进制结果
End Function
```
二、使用内置函数(简化操作)
VB提供`Val`函数可直接将二进制字符串转换为十进制数,适用于简单场景。
示例代码:
```vb
Dim binaryStr As String = "1011"
Dim decimalValue As Long = Val(binaryStr, 2)
Console.WriteLine(decimalValue) ' 输出11
```
说明:`Val`函数的第二个参数指定进制,此处为2表示二进制。
注意事项:
输入的二进制字符串可能包含前导零,需通过`Trim`函数去除空格。
若需处理非标准二进制数(如包含字母),需额外校验或转换逻辑。