大端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中,這樣的存儲(chǔ)模式有點(diǎn)兒類似于把數(shù)據(jù)當(dāng)作字符串順序處理:地址由小向大增加,而數(shù)據(jù)從高位往低位放;這和我們的閱讀習(xí)慣一致。
小端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中,這種存儲(chǔ)模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來(lái),高地址部分權(quán)值高,低地址部分權(quán)值低。
例如在 C 語(yǔ)言中,一個(gè)類型為 int 的變量 x 地址為 0x100,那么其對(duì)應(yīng)地址表達(dá)式&x的值為 0x100。且x的四個(gè)字節(jié)將被存儲(chǔ)在存儲(chǔ)器的 0x100, 0x101, 0x102, 0x103位置。
numpy.ndarray.byteswap() 函數(shù)將 ndarray 中每個(gè)元素中的字節(jié)進(jìn)行大小端轉(zhuǎn)換。
import numpy as np a = np.array([1, 256, 8755], dtype = np.int16) print ('我們的數(shù)組是:') print (a) print ('以十六進(jìn)制表示內(nèi)存中的數(shù)據(jù):') print (map(hex,a)) # byteswap() 函數(shù)通過(guò)傳入 True 來(lái)原地交換 print ('調(diào)用 byteswap() 函數(shù):') print (a.byteswap(True)) print ('十六進(jìn)制形式:') print (map(hex,a)) # 我們可以看到字節(jié)已經(jīng)交換了
我們的數(shù)組是: [ 1 256 8755] 以十六進(jìn)制表示內(nèi)存中的數(shù)據(jù): <map object at 0x104acb400> 調(diào)用 byteswap() 函數(shù): [ 256 1 13090] 十六進(jìn)制形式: <map object at 0x104acb3c8>