【问题标题】:I want to convert a number from 1 - 15 into a 4 bit binary number我想将 1 - 15 的数字转换为 4 位二进制数
【发布时间】:2026-01-20 03:10:01
【问题描述】:

到目前为止我已经得到了这个代码:

    Dim Binary_representation As String
    Dim random_number As Integer
    Dim lower As Integer = 1
    Dim upper As Integer = 15

    Randomize()
    random_number = CInt(Math.Floor((upper - lower + 1) * Rnd())) + lower

    BinaryNumber.Text = random_number

    Binary_representation = Convert.ToString(random_number, 2)

    BinaryNumber2.Text = Binary_representation

这很好,将数字转换为二进制,但是当例如随机数生成 3 时,它会将数字转换为 2 位二进制数,关于如何获得 0011 而不是 11 随机数时的任何想法示例 3。

有一个想法,在前面添加 0,当它只有 1 个字符时,添加 3 个 0、2 个字符、2 个 0 和 3 个字符 1 0。我该怎么做?

谢谢

【问题讨论】:

    标签: vb.net binary


    【解决方案1】:

    我会这样做:

    Dim r as New Random()
    BinaryNumber2.Text = Convert.ToString(r.Next(1,16), 2).PadLeft(4, "0"c)
    

    是的;只有两行。如果你愿意,可以把它切成一个:

    BinaryNumber2.Text = Convert.ToString(New Random().Next(1,16), 2).PadLeft(4, "0"c)
    

    这里的操作是:

    • Convert.ToString(number, toBase) - 仅限于使用,因为 toBase 必须是 2、8、10 或 16,但适用于此
    • New Random().Next(1, 16) - 创建一个新的随机数生成器,从系统时钟播种,并调用 Next 返回一个介于 1 和“小于 16”之间的数字,即 15。不要在循环内使用 New Random;它将运行得如此之快,以至于数百个新随机数将获得相同的种子值时间并产生相同的数字。在循环外创建一个 random 实例并在循环内调用 Next
    • PadLeft(4, '0') - 因为 Convert.ToString 没有放前导零

    【讨论】:

    • 谢谢,令人惊奇的是它可以在一条线上! :)
    最近更新 更多