numpy 字节交换
大端模式 地址由小向大增加,而数据从高位往低位放
小端模式 数据的高字节保存在高地址中,而数据的低字节保存在低地址中
大端模式:
低地址--------->高地址
0x12 0x34 0x56 0x78
高字节--------->低字节
小端模式:
低地址--------->高地址
0x78 0x56 0x34 0x12
低字节--------->高字节
设置字节顺序
array.dtype.byteorder() 只能查询,不能赋值。 ‘=’‘+’表示小端模式,‘>’表示大端模式
例子:
a = np.array([1,2,3,4],dtype='<i2')
a = np.array([1,2,3,4],dtype='=i2')
a = np.array([1,2,3,4],dtype='i2') #设置为小端模式
a = np.array([1,2,3,4],dtype='>i2') #设置为大端模式
完整例子:
a = np.array([1,2,3,4],dtype='>i2') #设置为大端模式
print(a.dtype.byteorder('>'))
a
array([256,512,765,1024],dtype=int16)
# 此时由于字节顺序改变,即计算机的阅读方法发生改变
# 如 1 由小端模式写入,在计算机的内存中为 00000001 00000000
# 计算机理解低位为 00000001 ,高位为 00000000 ,所以读取为 1
# 在给为大端模式后,内存中依然为 00000001 00000000
# 计算机理解高位为 00000001 ,低位为 00000000 ,所以读取为 256
字节交换 ndarray.byteswap(true)
交换字节在内存中的顺序,将高地址交换到低地址,把低地址交换到高地址
x = np.array([1,2,3,4],dtype='i2')
print(x.byteswap(True))
>>>array([256,512,768,1024],dtype=int16)
#实现字节交换,但是字节顺序不变
#如1由原来的00000001 00000000 变为 00000000 00000001
#计算机阅读方式不变,所以读取为256