在Python中将16字节的随机数据转换为整数

时间:2016-10-23 20:57:49

标签: python string random binary int

我生成了一个随机的16字节字符串。它看起来像这样:

b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\'

我想将其转换为(正)整数。在Python中执行此操作的最佳方法是什么?

我很感激帮助。

2 个答案:

答案 0 :(得分:3)

在Python 3.2+中,您可以使用#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { int p; p = fork(); if (fork()==0) { if (execl("/bin/echo", "/bin/echo", "foo", 0) == -1) { fork(); } printf("bar\n"); } else { if (p!=0) execl("/bin/echo", "/bin/echo", "baz", 0); } }

int.from_bytes()

你也可以使用'大'字节顺序:

>>> int.from_bytes(b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\', byteorder='little')
122926391642694380673571917327050487990

您还可以指定是否要使用二进制补码表示。有关详细信息:https://docs.python.org/3/library/stdtypes.html

答案 1 :(得分:1)

与Python 2和Python 3兼容的解决方案是使用struct.unpack:

import struct
n = b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\'
m = struct.unpack("<QQ", n)
res = (m[0] << 64) | m[1]
print(res)

结果:298534947350364316483256053893818307030L