我正在从/ 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)
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并且是生成的随机数).