我想把一个1-15的数字转换成一个4位二进制数



到目前为止,我已经得到了以下代码:

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位二进制,当随机数为3时,如何获得0011而不是11的任何想法。

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

感谢

以下是我的操作方法:

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(之间的数字。不要在循环中使用NewRandom;它将运行得如此之快,以至于数百个新的随机数将获得相同的种子值时间并产生相同的数字。在循环外创建一个随机实例,并在循环内调用Next
  • PadLeft(4, '0')-因为Convert.ToString不放前导零

最新更新