分配二进制常量

7
有没有一种方法可以将二进制值分配给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'

可能是如何在VB.NET中键入文字二进制?的重复问题。 - Darren
5个回答

18

这个可能会让我自残:

Convert.ToInt32("1100101", 2);

更加严肃地说(注意到您更新了问题),对于标记enums,您可能需要使用左位移运算符(<<

Dim myReality as Integer          = 1 << 0   // 1
Dim myAlternateReality as Integer = 1 << 1   // 2
Dim myParallelUniverse as Integer = 1 << 2   // 4
...

一直到31等等。


4

很遗憾,你能做的最好的是十六进制:

Dim x As Long = &H1234ABCD

2
我假设你是想对 John Rasch 给出的答案进行翻译。你有一个由 0 和 1 组成的字符串,希望将其转换为某种类型的变量。
    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

您还可以使用这些方法来处理十六进制(16)和八进制(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

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

1

需要使用注释吗?

Dim myFantasy as Integer = 2^3 '00000000-00001000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接