【发布时间】:2014-04-13 18:50:33
【问题描述】:
我正在尝试使用“gcry_randomize”填充一个数组,其中每个条目是四个字节。
我认为因为 long 由 4 个字节表示并且我只需要正数,所以我使用了一个包含 64 个条目的无符号长指针数组。然后我使用 gcry_randomize 函数用四个字节填充每个条目并尝试将其打印出来。关于 printf-function 存在编译器错误,但它正在工作。
unsigned long int* random_numbers[64];
for(index = 0; index < 64; index++){
gcry_randomize( random_numbers[index], 4, GCRY_STRONG_RANDOM);
printf("Random number: %lu \n", random_numbers[index]);
}
但是,结果并不是真正随机的,也不是我预期的大小(4 个字节而不是 1 个字节):
Random Number 0: 32535136
Random Number 1: 32535168
Random Number 2: 32535200
Random Number 3: 32535232
Random Number 4: 32535264
我应该将指针更改为无符号字符指针,然后将其转换为长整数吗?我的代码的下一步将以模数计算该数字,因此需要一个长整数。 另一种选择是创建一个 256 字节的随机 char 字符串,然后将字符串拆分为 4 个字节的部分,将其转换为 long 并保存。我用这种方法遇到的问题是我不知道如何读取 char 字符串的特定部分。
【问题讨论】:
标签: c arrays random long-integer gnupg