从c中的"/ dev/random"中读取

pni*_*zle 2 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);
Run Code Online (Sandbox Code Playgroud)

Hei*_*bug 9

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

uint16_t rand;            
int ret = read(myFile, &rand, sizeof(rand)) ;
Run Code Online (Sandbox Code Playgroud)

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