如何查找二进制16位数

时间:2018-06-18 14:38:21

标签: vb.net

我的程序中有16个不同的选项,我有一个16个字符的变量,根据所选的选项填充1或0(0000000000000000表示没有选择,0010101010000101表示选项3,5,7,9,选择14和16,1111111111111111表示选择了所有内容。)

当我运行我的程序时,代码看起来(使用if语句)在16位数字的指定字符中为1,如果有一个那么它运行该选项的代码,否则它会跳过它。

例如,选项3也会查看第3个字符(0010000000000000)是否为1,如果是,则运行代码。

现在我要做的是生成一个可能的每个不同组合的列表,这样我就可以为它创建一个选项来循环并运行每个可能的选项:

0000000000000001
0000000000000010
0000000000000011
...
1111111111111100个
1111111111111110个
1111111111111111个

我试过这个,但我认为运行jaja可能需要几年时间。

    Dim binString As String

Dim binNUM As Decimal =“0.0000000000000001”

    Do Until binNUM = 0.11111111111111111
        binString = binNUM.ToString
        If binString.Contains(1) Then
            If binString.Contains(2) Or binString.Contains(3) Or binString.Contains(4) Or binString.Contains(5) Or binString.Contains(6) Or binString.Contains(7) Or binString.Contains(8) Or binString.Contains(9) Then

            Else
                Debug.Print(binNUM)
            End If
        End If

        binNUM = binNUM + 0.0000000000000001

在上面的代码完成之后,我将获取输出列表并删除任何“0”的实例。然后任何少于16个chararcters的行(因为最后一个字符将是0而不显示)我会添加一个0直到有16个字符。我知道这一点可能是愚蠢的,但它远远超过了我的

有没有更快的方法可以在VB.net中生成这样的列表?

2 个答案:

答案 0 :(得分:1)

您应该可以使用Convert.ToString获取列表,如下所示:

Dim sb As New System.Text.StringBuilder

For i As Integer = 0 To 65535
    sb.AppendLine(Convert.ToString(i, 2).PadLeft(16, "0"c))
Next

Debug.Print(sb.ToString())

BTW:这应该在一秒钟内完成,具体取决于您的系统; - )

答案 1 :(得分:0)

使用@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //you get data in email app (TypeApp) Activity } }//onActivityResult 创建enum,这样您就可以执行列出的关键功能。以下是我正在处理的一个小项目中设置它的示例:

FlagAttributes

e.g。

<FlagsAttribute>
Public Enum MyFlags As Integer
    None = 0
    One = 1
    Two = 2
    Three = 4
    Four = 8
    Five = 16
    Recon = 32
    Saboteur = 64
    Mine = 128
    Headquarters = 256
End Enum

真正的优势在于它是如何打印出来的,如果你想要的东西不是0,1,而且更加人性化。