python - Python中整数的字节顺序

标签 python integer endianness

我正在开发一个程序,我将一些数据存储在整数中并按位处理。例如,我可能会收到数字 48,我将逐位处理它。一般来说,整数的字节序取决于整数的机器表示,但是 Python 是否会做任何事情来保证整数始终是小字节序?还是我需要像在 C 中一样检查字节顺序,然后为这两种情况编写单独的代码?

我问是因为我的代码在 Sun 机器上运行,虽然它现在运行的机器使用 Intel 处理器,但我将来可能不得不切换到具有 Sun 处理器的机器,我知道这是 big-endian。

最佳答案

Python 的 int 与运行它的处理器具有相同的字节顺序。 struct模块允许您以 native 、小端或大端方式将字节 blob 转换为整数(反之亦然,以及其他一些数据类型),具体取决于 format string您选择:以 @ 开头的格式或不使用字节序字符以使用 native 字节序(以及 native 大小 - 其他所有内容都使用标准大小),'~' 用于本地,'<' 用于小端, '>' 或 '!'对于大端。

这是逐字节的,不是逐位的;不确定在这种情况下逐位处理的确切含义,但我认为它可以类似地适应。

对于简单情况下的快速“批量”处理,还可以考虑 array模块 -- fromstringtostring 方法可以快速操作大量字节,而 byteswap 方法可以让您获得“其他”字节序(本地到非本地,反之亦然),同样快速且适用于大量项目(整个数组)。

关于python - Python中整数的字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400012/

相关文章:

python - Django:使用 user.get_profile()

c++ - C++中有符号到无符号的转换

Java实现htonl

arrays - 将十六进制代码数组插入整数

C++ double 到二进制表示(重新解释转换)

python - 类方法的最小装饰器

python - 获取 pandas 中具有相同值的所有行

java - LIUM 演讲者分类如何运作?

haskell - Haskell中整数的非整数居民

ruby - `-' :String 的未定义方法 "100"