我需要用来自 /dev/urandom 的数据填充一个整数类型变量(任意大小)。考虑到这一点,我有以下代码:
std::fstream fstr("/dev/urandom", std::fstream::in | std::fstream::binary);
fstr.read(reinterpret_cast<char*>(&randomseed), sizeof(randomseed));
fstr.close();
(randomseed 是我需要用随机数据填充的变量)。
这会做正确的事情吗(即无论库实现如何,它都是安全的),还是我应该使用其他一些 *_cast?
最佳答案
这不安全。只有 char
类型保证没有陷阱表示。
“正确”的解决方案是包装 /dev/urandom
在 C++ 中 <random>
引擎,并使用 std::uniform_int_distribution
.
关于c++ - 我应该使用哪个 *_cast 将任意整数类型的指针转换为 char 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315503/