从c中的“/ dev / random”中读取

时间:2011-09-17 14:52:00

标签: c random

我正在从/ dev / random读取uint16_t类型的高质量16位随机数 我得到的数字大到: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 个答案:

答案 0 :(得分:9)

unsigned int可能不是你的pc架构上的16位。如果你想确定使用uint16_t。

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

我认为你混淆了read的返回值(ret应该是int并且是读取的字节数)和生成的随机数(rand应该是uint16_t并且是生成的随机数)。

答案 1 :(得分:0)

在代码中将'unsigned int rand'更改为'unsigned short rand',你会没事的!