-3

我有一部分规范要求我创建一个随机的 64 位数字,并将以下内容转换为字符串:(0 到 2^63 - 1)

我不知道括号中的意思是什么,有人可以帮忙吗?

4

2 回答 2

2

括号是 0 到 2^63-1 之间的随机 64 位数字的集合生成器表示法,不包括 0 和 2^63-1。

于 2013-07-15T14:13:21.290 回答
0

由于您没有指定编程语言,因此我将在 C 中提供解决方案,然后您可以将其调整为您可能使用的任何编程语言,如果它不是 C(或近亲)。

您可以调用arc4random两次并连接这些值:

 #include <stdint.h>
 #include <stdlib.h>

 int64_t rand64(void)
 {
     uint64_t r_lo = (uint64_t)arc4random();
     uint64_t r_hi = (uint64_t)arc4random();
     return (int64_t)((r_hi << 31) | (r_low >> 1));
 }

您可以很容易地将其转换为十六进制 ASCII 字符串:

 char s[17];

 int64_t r = rand64();
 sprintf(s, "%16llx", r);

(如果您需要它作为十进制或其他格式,那么只需相应地修改sprintf格式字符串)。

于 2013-07-15T15:00:45.680 回答