首页 > Python3教程 > Python扩展程序库 -- NumPy

NumPy 字节交换

在几乎所有的机器上,多字节对象都被存储为连续的字节序列。字节顺序,是跨越多字节的程序对象的存储规则。

存储在计算机内存中的数据取决于 CPU 使用的架构。 它可以是小端(最小有效位存储在最小地址中)或大端(最小有效字节存储在最大地址中)。

  • 大端模式:指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。
  • 小端模式:指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。

numpy.ndarray.byteswap()

numpy.ndarray.byteswap() 函数将 ndarray 中每个元素中的字节进行大小端模式的转换。

import numpy as np

a = np.array([1, 256, 8755], dtype=np.int16)

print('我们的数组是:')
print(a)
print('以十六进制表示内存中的数据:')
print(map(hex, a))

# byteswap() 函数通过传入 true 来原地交换
print('调用 byteswap() 函数:')
print(a.byteswap(True))
print('十六进制形式:')
print(map(hex, a))
# 我们的数组是:
# [ 1 256 8755]
# 以十六进制表示内存中的数据:
# <map object at 0x000001FADFBCB5C0>
# 调用 byteswap() 函数:
# [ 256 1 13090]
# 十六进制形式:
# <map object at 0x000001FADFDD05F8>
关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。