怎样在vb上将十进制数转换为二进制字符串
发布网友
发布时间:2022-05-01 08:03
我来回答
共1个回答
热心网友
时间:2022-06-26 11:47
1、在VB中没有一种所谓的“真正的二进制”,只有long、integer、byte这样的整数。
2、VB中不支持二进制字符串。只支持16进制字符串,需要在前面加前缀"&H"。
比如:CLng("&HFFFF")
3、如果你想将"1010011101"这样的二进制字符串转换为数值,需要自己写一个函数。
下面是我给你写的一个:
Function BinaryValue(ByVal strBin As String) As Long
Dim lngOutValue As Long
Dim bytBytes() As Byte
Dim bytAscii(0 To 255) As Byte
Dim lngBytes_Start As Long
Dim lngBytes_Length As Long
Dim lngBytes_Index As Long
bytAscii(49) = 1
bytBytes() = StrConv(strBin, vbFromUnicode)
lngBytes_Length = UBound(bytBytes)
If lngBytes_Length > 30 Then lngBytes_Start = lngBytes_Length - 30
For lngBytes_Index = lngBytes_Start To lngBytes_Length
lngOutValue = lngOutValue + bytAscii(bytBytes(lngBytes_Index)) * 2 ^ (lngBytes_Length - lngBytes_Index)
Next
BinaryValue = lngOutValue
End Function
BinaryValue函数可以将31位以下的二进制字符串转换为Long类型整数。
比如下面的用法:
MsgBox (BinaryValue("1111111111111111111111111111110"))
4、如果你想获取一个整数的二进制位可以使用下面的函数:
Function BinaryBit(ByVal lngValue As Long, ByVal lngIndex As Long) As Long
BinaryBit = (lngValue \ 2 ^ lngIndex) Mod 2
End Function
lngValue是long类型数值;
lngIndex是二进制位,从0开始计算,最大值是30。第0位是二进制最右边的那个位。
比如5的二进制是"101"
MsgBox BinaryBit(5, 0) 返回1
MsgBox BinaryBit(5, 1) 返回0
MsgBox BinaryBit(5, 2) 返回1
下面演示如何获取&HFF(255)的二进制字符串。
Dim i As Long
Dim s As String
For i = 0 To 30
s = BinaryBit(&HFF, i) & s
Next
MsgBox s