我试图从以下条件中找到所有可能的排列:
编号范围1-99
字母范围A-F
32位长字符串
你会建议什么让我的生活更轻松?试图搜索vb中的排列,但却无法找到它们,我也不知道为什么,但它看起来并不是那么艰巨的任务:s
样品:
9A E5 4B CA BD 93 DE 2E 01 00 00 01 00 00 00 00
6E C7 9A CF CB A7 67 D9 17 EE 6B 70 F0 5E E4 32
64 86 00 EA 91 71 65 67 1F CE FE EB B1 CC 07 84
63 C0 8A AD F7 9F 5D F3 06 01 00 07 00 00 00 00
51 16 15 7C 56 9F 0A FF 55 1C 20 91 58 CD AA CF
48 61 56 FF 41 6E 49 F8 45 70 49 FE 54 75 52 1B
45 BA B8 B7 42 52 E3 77 03 00 00 03 00 00 00 00
40 D0 F4 04 BF AF 2B 99 02 00 00 02 00 00 00 00
40 30 90 00 3F 7C 83 3E 68 98 D5 D5 6D D9 A3 E9
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FE A1 CE 6D A6 82 A9 D1 00 00 00 00 00 00 00 00
感谢您的帮助!
编辑:
这是我的代码
Public Class Form1
Dim c As Integer
Dim p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, a As String
Dim combo As String
Dim random As Random
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
c = -1
While c <= 99
c = c + 1
If c < 10 Then
a = "0" & c
Else : a = c
End If
p1 = a
p2 = 2
combo = p1 + " " + p2 + " " + p3 + " " + p4 + " " + p5 + " " + p6 + " " + p7 + " " + p8 + " " + p9 + " " + p10 + " " + p11 + " " + p12 + " " + p13 + " " + p14 + " " + p15 + " " + p16 + " " + vbNewLine
RichTextBox1.AppendText(combo + vbNewLine)
End While
End Sub
结束班
答案 0 :(得分:1)
从你的例子来看,你的意思是0-9(不是1-9)和A-F
Alex K.整洁地提供了解决这个问题的方向:
你会忽略&#34;数字和字母&#34;因为那是十六进制的 字节表示法(AF == 175)有16个字节,每个字节都可以 保持0到255所以你有 340,282,366,920,938,463,463,374,607,431,768,211,455可能 组合
虽然理论上可以获得所有这些排列,但您的计算机需要约 34,028,236,692,093,846,346,337,460,743 GB。我不认为存在很多记忆总计
如果它是一个相对较小的数字,我们可以使用以下方法完成此操作:
Sub purgatory()
Dim counter As Long
Dim output As String
counter = 0
For counter = 0 To 2147483647#
output = String(16 - Len(Hex(counter)), "0") & Hex(counter)
MsgBox output
Next counter
End Sub
但是VBA7中long的最大值是2,147,483,648(4 Bytes / 2),或者是VB net的8个字节。这意味着12个字节和1个位将始终为0.这可以通过一些嵌套的for循环来解决。
我认为JNevill最能回答你问题的解决方案
00-FF的16种组合......那是精神错乱...
重要提示:如果您运行我发布的代码,首先要熟悉Ctr + Pause / Break是很重要的。以最快的方式摆脱炼狱;)