如何在python中将blob转换为整数?
我有一些文件,里面有一些小的endian编码字节,我想使用如何在python中将blob转换为整数?,python,endianness,Python,Endianness,我有一些文件,里面有一些小的endian编码字节,我想使用N字节,指定endian并使用python(任何版本)将它们转换为十进制数。如何正确执行此操作?在Python 3中,您可以使用以下内容: int.from_bytes(byte_string, byteorder='little') 在Python 3中,您可以使用如下内容: int.from_bytes(byte_string, byteorder='little') 使用Python3(或2),可以通过库实现这一点 现在,您可以
N
字节,指定endian并使用python(任何版本)将它们转换为十进制数。如何正确执行此操作?在Python 3中,您可以使用以下内容:
int.from_bytes(byte_string, byteorder='little')
在Python 3中,您可以使用如下内容:
int.from_bytes(byte_string, byteorder='little')
使用Python3(或2),可以通过库实现这一点
现在,您可以使用适当的。例如,big-endian int:
num = struct.unpack(">i",data)
使用Python3(或2),可以通过库实现这一点
现在,您可以使用适当的。例如,big-endian int:
num = struct.unpack(">i",data)
正如Harshad Mulmuley的回答所示,在Python3中使用
int.from_bytes
方法很容易做到这一点。在Python2中,它有点棘手
struct
模块设计用于处理标准的C数据类型。它不会处理任意长度的整数(Python2long
integers),因为它们不是C语言固有的。但是您可以使用一个简单的for
循环来转换它们。我预计这将比Python3方式慢很多,因为Pythonfor
循环比以C速度循环要慢,就像int.from_bytes
(可能)那样
(我将Python3打印调用放在那里,这样您就可以轻松地验证我的函数是否给出了与int.from_bytes
相同的结果)
如果您的数据非常大,并且您不想浪费RAM来反转字节字符串,您可以这样做:
def int_from_bytes_LE(s):
m = 1
total = 0
for c in s:
total += m * ord(c)
m <<= 8
return total
def int_from_bytes_LE:
m=1
总数=0
对于s中的c:
总计+=m*ord(c)
m正如Harshad Mulmuley的回答所示,在Python3中使用int.from_bytes
方法很容易做到这一点。在Python2中,它有点棘手
struct
模块设计用于处理标准的C数据类型。它不会处理任意长度的整数(Python2long
integers),因为它们不是C语言固有的。但是您可以使用一个简单的for
循环来转换它们。我预计这将比Python3方式慢很多,因为Pythonfor
循环比以C速度循环要慢,就像int.from_bytes
(可能)那样
(我将Python3打印调用放在那里,这样您就可以轻松地验证我的函数是否给出了与int.from_bytes
相同的结果)
如果您的数据非常大,并且您不想浪费RAM来反转字节字符串,您可以这样做:
def int_from_bytes_LE(s):
m = 1
total = 0
for c in s:
total += m * ord(c)
m <<= 8
return total
def int_from_bytes_LE:
m=1
总数=0
对于s中的c:
总计+=m*ord(c)
m您可能可以使用struct模块。N
有多大?N
的可能副本可以达到文件大小。您可能可以使用struct模块。N
有多大?N
的可能副本可以达到文件大小。我不知道+1好的,我们有一个Python 3的解决方案。如何为Python 2实现这一点?使用struct
as@juanpa.arrivillagamentioned@warchantua:我发布了一些Python 2代码。它没有Python3版本漂亮,但它可以工作。:)我不知道+1好的,我们有一个Python 3的解决方案。如何为Python 2实现这一点?使用struct
as@juanpa.arrivillagamentioned@warchantua:我发布了一些Python 2代码。它没有Python3版本漂亮,但它可以工作。:)<代码>结构
在Python2中也可用,不是吗?@VPfB是的。请参阅。struct
在Python2中也可用,不是吗?@VPfB是的。看。