Я хочу преобразовать число от 1 до 15 в 4-битное двоичное число - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть этот код:

    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. 3. 1004 *

Есть идея, что добавление 0 на передней панели, когда это только 1 символ, добавляет 3 0, 2 символа, 2 0 и 3 символа 1 0. Как я могу это сделать?

Спасибо

1 Ответ

1 голос
/ 26 апреля 2020

Вот как бы я это сделал:

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» ie 15. не использовать New Random внутри цикла; он будет работать так быстро, что сотни новых случайных чисел получат одинаковое время начального значения и произведут идентичные числа Сделайте один случайный случай вне al oop и вызовите Next внутри l oop
  • PadLeft(4, '0') - потому что Convert.ToString не ставит ведущие нули
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...