English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Байт-сворачивание в NumPy

Большой конец:Этот способ хранения данных означает, что высокие байты данных хранятся в низких адресах памяти, а низкие байты данных хранятся в высоких адресах памяти. Such a storage mode is somewhat similar to treating data as a string in order: the address increases from small to large, and data is placed from high to low; this is consistent with our reading habits.

Малый конец:Этот способ хранения данных означает, что высокие байты данных хранятся в высоких адресах памяти, а низкие байты данных хранятся в низких адресах памяти. Such a storage mode effectively combines the address and bit weight of data, with higher weight for the high address part and lower weight for the low address part.

Например, в языке программирования C переменная типа int с адресом 0x100, так что выражение &x имеет значение 0x100. И четыре байта переменной x будут храниться в памяти по адресам 0x100, 0x101, 0x102, 0x103.

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 0x104acb400>
 Вызов функции byteswap():
 [ 256 1 13090]
 Формат шестнадцатеричной системы:
 <map object at 0x104acb3c8>