我生成了一个随机的16字节字符串。它看起来像这样:
b'\xb68 \xe9L\xbd\x97\xe0\xd6Q\x91c\t\xc3z\\'
我想将其转换为(正)整数。在Python中执行此操作的最佳方法是什么?
我很感激帮助。
答案 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