签名长 - python随机数生成器

时间:2017-07-27 10:16:57

标签: python

我正在尝试根据Comcast货币追踪规范生成范围ID。

https://github.com/Comcast/money/wiki

span-id应为signed long int个代表

以下是查询

  1. “long int”表示64位还是32位
  2. 我使用以下函数生成'span-id'但在中央服务器中使用的解析器失败说“超出范围(-9223372036854775808 - 9223372036854775807)”
  3. random.getrandbits(64);

    我很困惑long int应该是32 bit还是64 bit

2 个答案:

答案 0 :(得分:0)

它告诉你范围的事实告诉你它是64位整数 [-9223372036854775808,9223372036854775807] = [-2 ^ 63,2 ^ 63-1]

hive.execution.engine=spark虽然没有生成有符号的int。即你正在创建0到18446744073709551616之间的整数。

尝试getrandbits

答案 1 :(得分:0)

如果理解错误,有人可以纠正我

始终“random.getrandombits(64)”将产生输出

无符号64位数(0到2 ** 64 -1)

可能的解决方案是生成有符号的long int( - (2 ^ 63)到(2 ^ 63)-1)

random.getrandombits(64) - 2 ** 63

谢谢@Batman