NumPy 位元組交換
在幾乎所有的機器上,多位元組對象都被存儲為連續的位元組序列。位元組順序,是跨越多位元組的程式對象的存儲規則。
-
大端模式:指數據的高位元組保存在內存的低地址中,而數據的低位元組保存在內存的高地址中,這樣的存儲模式有點兒類似於把數據當作字串順序處理:地址由小向大增加,而數據從高位往低位放;這和我們的閱讀習慣一致。
-
小端模式:指數據的高位元組保存在內存的高地址中,而數據的低位元組保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低。
例如在 C 語言中,一個類型為 int 的變數 x 地址為 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>