如何在python中将blob转换为整数?

如何在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),可以通过库实现这一点 现在,您可以

我有一些文件,里面有一些小的endian编码字节,我想使用
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数据类型。它不会处理任意长度的整数(Python2
long
integers),因为它们不是C语言固有的。但是您可以使用一个简单的
for
循环来转换它们。我预计这将比Python3方式慢很多,因为Python
for
循环比以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数据类型。它不会处理任意长度的整数(Python2
long
integers),因为它们不是C语言固有的。但是您可以使用一个简单的
for
循环来转换它们。我预计这将比Python3方式慢很多,因为Python
for
循环比以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是的。看。