我正在从/ 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);
答案 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',你会没事的!