Échange d'octets NumPy

Dans presque toutes les machines, les objets multi-octets sont stockés sous forme de séquences d'octets consécutives. L'ordre des octets est la règle de stockage des objets de programme qui s'étendent sur plusieurs octets.

  • Mode gros-boutiste :Désigne le fait que l'octet de poids fort des données est stocké à l'adresse mémoire basse, tandis que l'octet de poids faible est stocké à l'adresse mémoire haute. Ce mode de stockage ressemble quelque peu à un traitement des données comme une chaîne dans l'ordre : les adresses augmentent de petit à grand, tandis que les données sont placées du poids fort au poids faible ; cela correspond à nos habitudes de lecture.

  • Mode petit-boutiste :Désigne le fait que l'octet de poids fort des données est stocké à l'adresse mémoire haute, tandis que l'octet de poids faible est stocké à l'adresse mémoire basse. Ce mode de stockage combine efficacement le niveau d'adresse avec le poids des bits de données : la partie d'adresse haute a un poids élevé, et la partie d'adresse basse a un poids faible.

Par exemple, en langage C, une variable int x a l'adresse 0x100, donc la valeur de son expression d'adresse correspondante &x est 0x100. Les quatre octets de x seront stockés aux positions mémoire 0x100, 0x101, 0x102, 0x103.

numpy.ndarray.byteswap()

La fonction numpy.ndarray.byteswap() convertit l'ordre des octets de chaque élément d'un ndarray entre le format gros-boutiste et le format petit-boutiste.

Exemple

import numpy as np a = np.array([1, 256, 8755], dtype = np.int16) print ('Notre tableau est :') print (a) print ('Afficher les données en mémoire en hexadécimal :') print (map(hex,a)) # la fonction byteswap() effectue l'échange sur place en passant True print ('Appeler la fonction byteswap() :') print (a.byteswap(True)) print ('Forme hexadécimale :') print (map(hex,a)) # Nous pouvons voir que les octets ont été échangés

Résultat de sortie :

我们的数组是:
[   1  256 8755]
以十六进制表示内存中的数据:
<map object at 0x104acb400>
调用 byteswap() 函数:
[  256     1 13090]
十六进制形式:
<map object at 0x104acb3c8>
Autres extensions