有没有办法将二进制值分配给VB变量?所有明显的选择都不起作用。我尝试使用&B
添加前缀,并附加b
,但似乎没有任何效果。我也没有太多运气寻找它。我的需要这个用于我的应用程序,但我更确切地说,只是好奇所以不需要替代解决方案。
[编辑] 为了澄清,我正在寻找的东西(似乎不可能)是如何为变量分配文字二进制数,以类似的方式分配十六进制或八进制数。我只是在寻找一种更具视觉冲击力的方式来为一个标志枚举赋值。
代码:
Dim num as Integer = &H100ABC 'Hex'
Dim num2 as Integer = &O123765 'Octal'
Dim myFantasy as Integer = &B1000 'What I would like to be able to do'
Dim myReality as Integer = 2 ^ 3 'What I ended up doing'
答案 0 :(得分:17)
我可能会在这个之后刺伤自己:
Convert.ToInt32("1100101", 2);
更严肃的说明(注意到您已更新问题),对于标记enums
您可能需要的是left shift operator (<<
):
Dim myReality as Integer = 1 << 0 // 1
Dim myAlternateReality as Integer = 1 << 1 // 2
Dim myParallelUniverse as Integer = 1 << 2 // 4
...
以及最多31个。
答案 1 :(得分:3)
不幸的是,你能做的最好的就是Hex:
Dim x As Long = &H1234ABCD
答案 2 :(得分:2)
我认为你的意思是John Rasch提供的答案。你有一个由零和一个由你想要转换成某种变量的字符串组成的字符串。
Dim b As String = "10101"
Dim i As Integer = 73
Dim s As String
s = Convert.ToString(i, 2) 's contains the binary representation of 73 - 1001001
i = Convert.ToInt32(b, 2) 'i now = 21
你也可以将这些方法用于hex(16)和octal(8)。
你也可以这样做
Dim i As Integer = 6
If (i And _bi.t0) = _bi.t0 OrElse (i And _bi.t1) = _bi.t1 Then
'bit 0 or 1 on
End If
Enum _bi As Integer
t0 = CInt(2 ^ 0)
t1 = CInt(2 ^ 1)
t2 = CInt(2 ^ 2)
t3 = CInt(2 ^ 3)
t4 = CInt(2 ^ 4)
t5 = CInt(2 ^ 5)
t6 = CInt(2 ^ 6)
t7 = CInt(2 ^ 7)
t8 = CInt(2 ^ 8)
t9 = CInt(2 ^ 9)
t10 = CInt(2 ^ 10)
t11 = CInt(2 ^ 11)
t12 = CInt(2 ^ 12)
t13 = CInt(2 ^ 13)
t14 = CInt(2 ^ 14)
t15 = CInt(2 ^ 15)
t16 = CInt(2 ^ 16)
t17 = CInt(2 ^ 17)
t18 = CInt(2 ^ 18)
t19 = CInt(2 ^ 19)
t20 = CInt(2 ^ 20)
t21 = CInt(2 ^ 21)
t22 = CInt(2 ^ 22)
t23 = CInt(2 ^ 23)
t24 = CInt(2 ^ 24)
t25 = CInt(2 ^ 25)
t26 = CInt(2 ^ 26)
t27 = CInt(2 ^ 27)
t28 = CInt(2 ^ 28)
t29 = CInt(2 ^ 29)
t30 = CInt(2 ^ 30)
End Enum
答案 3 :(得分:1)
或描述性的内容
Enum _SerialPortPins As Integer
RTS = CInt(2 ^ 4)
CTS = CInt(2 ^ 5)
DSR = CInt(2 ^ 6)
DCD = CInt(2 ^ 8)
DTR = CInt(2 ^ 20)
RI = CInt(2 ^ 22)
End Enum
答案 4 :(得分:1)
使用评论?
Dim myFantasy as Integer = 2^3 '00000000-00001000