#c #ubuntu
Вопрос:
Привет, может кто-нибудь сказать мне, какой формат /dev/urandom выводит и как я могу воспроизвести вывод вручную?.
Я пытаюсь удалить идею случайности из сценария, который я пишу/использую, и вместо этого размещаю увеличивающееся значение в порядке, например 1,2,3,4,5 и т. Д…
Тем не менее, /dev/urandom не выводит целые числа, я не знаю, в каком формате выводится. Это похоже на какой-то шестнадцатеричный/двоичный код
Я думаю, что это один из способов использования /dev/urandom
hexdump -C -n 8 /dev/random
Однако, возможно, есть и другие способы. Я просто пытаюсь удалить любую случайность из своего сценария и заменить ее увеличивающимся значением. Поэтому в порядке слов вместо случайных значений я хочу, чтобы все они были в порядке от первого возможного в диапазоне /dev/urandom до последнего значения в диапазоне /dev/urandom.
Кто-нибудь знает, как это сделать?
— обновление: Использование этой строки было совершенно неправильным подходом в моем первоначальном вопросе
hexdump -C -n 8 /dev/random
потому что
/dev/urandom на самом деле выводит целое число, обычно не двоичное/шестнадцатеричное, как я сейчас выяснил.
Комментарии:
1. Когда вы спрашиваете
1, 2, 3, 4, 5
, каков тип этих значений?int
?char
? В этом и кроется ключ.2. Если вам не нужны случайные числа, не используйте /dev/urandom. Просто увеличьте переменную в диапазоне значений.
3. @PaulSanders пожалуйста, прочтите мои комментарии ниже для hookenz
4. @dbush да, точно, но вывод не цифры. Так что да, мне нужно знать, каков диапазон? и как установить первое значение диапазона, а затем выполнить цикл до последнего значения в диапазоне.
5. @PaulSanders я не уверен, что тип вывода /dev/urandom-это то, что я пытаюсь понять. Я не думаю, что это int или символ.
Ответ №1:
Чтение из /dev/urandom просто дает вам случайные байты. Код, который вы упомянули в комментариях, считывает 32 случайных байта из /dev/urandom в буфер.
Если вам нужны не случайные значения, а набор последовательных значений, запишите (например) значения от 1 до 32 в 32 байтах, т. е.:
for (i=0;i<32;i ) {
seckey[i]=i 1;
}
Ответ №2:
Нет никакого формата. Это случайные байты. Каждый байт является случайным.
Комментарии:
1. Спасибо за ваш ответ. Знаете ли вы, как я могу вывести первый возможный байт во всем возможном диапазоне
2. Как вы и сказали, это случайная последовательность байтов. Знаете ли вы, каким будет первый возможный байтовый вывод?
3. Считайте один байт. Это 0 — 255 возможных значений. Если вы прочитаете два байта как слово, вы получите значения 0-65536 и т. Д.
4. хорошо, отлично, но я все еще не понимаю, как это работает. Я покажу вам, что именно я пытаюсь сделать. если вы посмотрите на этот файл в строке 22 — github.com/nickfarrow/niceBit/blob/master/niceBit.c это настройка значения SecKey
5. однако скрипт генерирует случайные значения, я пытаюсь изменить его, чтобы он был только первым значением диапазона, и полностью удалить /udev/random, вы знаете, как это сделать?