чтение из "/ dev / random" в c - PullRequest
       11

чтение из "/ dev / random" в c

2 голосов
/ 17 сентября 2011

Я читаю 16-битные случайные числа высокого качества типа uint16_t из / dev / random и я получаю такие большие числа, как: 2936814755. Это правильно

int myFile = open("/dev/random", O_RDONLY);            
unsigned int rand;            
uint16_t randomNum = read(myFile, &rand, sizeof(rand)) ;
printf(" %u ", rand);
close(myFile);

Ответы [ 2 ]

9 голосов
/ 17 сентября 2011

unsigned int, вероятно, не является 16-битной архитектурой вашего компьютера.Если вы хотите быть уверенным, используйте вместо этого uint16_t.

uint16_t rand;            
int ret = read(myFile, &rand, sizeof(rand)) ;

Я думаю, что вы путали возвращаемое значение read (ret, которое должно быть int и это число прочитанных байтов) и сгенерированное случайное число (randэто должно быть uint16_t и является генерируемым случайным числом).

0 голосов
/ 17 сентября 2011

Измените «unsigned int rand» на «unsigned short rand» в вашем коде, и все будет в порядке!

...