以大端方案存儲
❶ 如何提取大端存儲(Big
必須清楚文件中以大端存儲數據的類型,16、32還是64位。知道了這個,就可以轉換了。轉換方法很多:
1、16位交換HIBYTE()與LOBYTE(),32位交換HIWORD()與LOWORD(),64位前兩者結合
2、調用網路編程函數ntohs(16位)、ntohl(32位)
3、匯編實現,不說了,懂匯編就不會問這個問題了
❷ 大端存儲法與小端存儲法有什麼不同
大端模式就是低位存放在高地址上。高位存放在地址上。
小端模式就是地位存放在低地址上。高位存放在高地址上。
例如,16bit寬的數0x1234在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
內存地址 0x4000 0x4001
存放內容 0x34 0x12
而在Big-endian模式CPU內存中的存放方式則為:
內存地址 0x4000 0x4001
存放內容 0x12 0x34
❸ 大端存儲與小端存儲對存儲數據的要求
大端小端針對多位元組數據存儲時位元組順序而言的。所謂"Little Endian",為INTEL所採用模式,數據的低位元組存放在內存低地址中,高位元組存放在高地址中,即學X86時說的「高高低低」原則。Byte3 Byte2 Byte1 Byte0在內存中對應的是:
Base Address+0 Byte0
Base Address+1 Byte1
Base Address+2 Byte2
Base Address+3 Byte3
所謂"Big Endian" ,為MOTO所採用模式,數據的低位元組存放在內存的高地址,數據的高位元組存放在內存的低地址。Byte3 Byte2 Byte1 Byte0在內存中對應的是:
Base Address+0 Byte3
Base Address+1 Byte2
Base Address+2 Byte1
Base Address+3 Byte0
java使用的是大端序來存儲數據。big—endian:即低位元組的數據存儲在高位內存上,如對於1234,12是高位數據,34為低位數據,則java中的存儲格式應該為12存在內存的低地址,34存在內存的高地址,x86中的存儲格式與之相反。
❹ 大端存儲和小端存儲
參考: https://blog.csdn.net/u010889616/article/details/47157637
大端存儲:數據的低位元組存儲在地址空間的高位元組位,數據的高位元組存儲在地址空間的低位元組位。
小端存儲:數據的低位元組存儲在地址空間的低位元組位,數據的高位元組存儲在地址空間的高位元組位。
為什麼要有大小端存儲:
大端存儲因為低地址先獲取到的是數據的高地址,也就是符號位,從而很容易知道一個數是正數還是負數。而小端存儲,則相反,更適合做數值的四則運算,最後再刷新符號位。因為存在著進位,如果從高位開始,算到後面發現有進位,就要回退到高位處理進位,而小端存儲這樣做可以先判斷是否有進位,而不用返回去再進行計算。
❺ 大端存儲法與小端存儲法有什麼不同
大端排序的好處是接收數據的程序可以優先得到數據的最高位,以便快速反應。
比如我有一個控制溫度的上位機程序,該程序接收大端方式編碼的溫度信號0x00fe,對比原來的溫度值,假設是0x0135。那麼在接受第一個位元組0x00的時候,上位機就可以判斷溫度比原來下降了,可以立即發出指令打開加熱器。而對於小端排序的方式,上位機只有在接收到完整的兩個位元組的時候才能做出反應。如果採用串列通信,用只對信號的每一個位元組單獨校驗的話,波特率為9600時,大端編碼下,上位機的響應時間為1ms,小端排序方式下,上位機響應時間為2ms。這時,大端編碼就比小端排序更快。如果需要對完整的通信包進行校驗,則沒有區別。
在串列通信測試程序中,計算機顯示的位元組順序一般就是接收順序。如果用大端編碼的話,測試程序直接就可以顯示出從大到小排列好的數據。而小端排序的方向相反,可視性不好,容易看花眼掉。
結論是:1、串列通信(包括乙太網、wifi、串口、usb等)如果採用大端編碼有時會使系統響應更快速。2、串列通信採用大端編碼有利於調試。
小端排序下,選定一個數據的起點後,只需要重復進位加法就可以實現高精度加法計算。減法也是一樣。數組的第0位固定是最低位。而大端方式下,如果高精度計算的精度可變,就很難確定數組的第0位到底代表多大。不同精度的計算還會產生數據對齊問題。比如早期的16位cpu中,int類型和long類型做加法,用小端排序就很容易從指針位置開始計算。而大端排序則非常復雜。加法運算是非常常用的運算,其性能直接影響程序的整體性能。所以cpu中要採用性能較好的小端排序。
由於cpu本身是小端排序,如果內存和文件也採用小端排序的話,就可以把文件中的數據直接存儲到內存中,再直接把內存中的數據存儲到cpu的寄存器。這樣不僅提高計算機的性能,程序也變得簡單。
結論是:所有直接與硬體有關的代碼都適合按小端排序