Python 关于使用dtype.newbyteorder

Python 关于使用dtype.newbyteorder,python,numpy,scipy,Python,Numpy,Scipy,我曾经在一个给定的程序中读过下面的函数,但我不太清楚这个函数的用途是什么?根据SciPy.org 数据类型.newbyteorder(new_order='S') 返回具有不同字节顺序的新数据类型 我不太明白这是什么意思 def _read32(bytestream): dt = numpy.dtype(numpy.uint32).newbyteorder('>') return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]

我曾经在一个给定的程序中读过下面的函数,但我不太清楚这个函数的用途是什么?根据
SciPy.org

数据类型.newbyteorder(new_order='S') 返回具有不同字节顺序的新数据类型

我不太明白这是什么意思

def _read32(bytestream):
   dt = numpy.dtype(numpy.uint32).newbyteorder('>')
   return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]

下面是一个简单的例子:

>>> dt = np.dtype(np.uint32)
>>> val = np.frombuffer(b'\x01\x02\x03\x04', dtype=dt)
>>> hex(val)
'0x4030201'
>>> val2 = np.frombuffer(b'\x01\x02\x03\x04', dtype=dt.newbyteorder('>'))
>>> hex(val2)
'0x1020304'

字节顺序描述了将一系列字节(在本例中为
b“…”
literal中的
bytes
对象)打包到所需数据类型中的顺序。

以下是一个简单的示例:

>>> dt = np.dtype(np.uint32)
>>> val = np.frombuffer(b'\x01\x02\x03\x04', dtype=dt)
>>> hex(val)
'0x4030201'
>>> val2 = np.frombuffer(b'\x01\x02\x03\x04', dtype=dt.newbyteorder('>'))
>>> hex(val2)
'0x1020304'

字节顺序描述了将一系列字节(在本例中,是来自
b“…”
literal的
bytes
对象)打包到您要求的数据类型中的顺序。

阅读“endianess”可能会有所帮助:阅读“endianess”可能会有所帮助:谢谢您的回答。上面列出的函数用于检索图像。在我看来,我们可以在读取图像时控制字节顺序。但是我们如何知道哪个应该是正确的字节顺序呢?@user288609:你不应该在意-图像中的像素值都是字节(通常),所以字节顺序不是问题(用
uint8
试试上面的代码,你就会明白我的意思)。但是,您现在需要知道图像是BGR还是RGB。要知道这一点,唯一的办法就是看看编写它的程序!谢谢你的回答。上面列出的函数用于检索图像。在我看来,我们可以在读取图像时控制字节顺序。但是我们如何知道哪个应该是正确的字节顺序呢?@user288609:你不应该在意-图像中的像素值都是字节(通常),所以字节顺序不是问题(用
uint8
试试上面的代码,你就会明白我的意思)。但是,您现在需要知道图像是BGR还是RGB。要知道这一点,唯一的办法就是看看编写它的程序!