您好,登錄后才能下訂單哦!
TODO:字節序的一些理解
本文是小編對字節序的片面理解,希望對你有幫助哈。
字節序,即字節在電腦中存放時的序列與輸入(輸出)時的序列是先到的在前還是后到的在前。
1.Little endian:將低序字節存儲在起始地址,俗稱小端
2.Big endian:將高序字節存儲在起始地址,俗稱大端
比如一個0x01020304(左高右低)這個整數,在小端下在內存中的布局如下
[04][03][02][01] 注意左邊是低地址,而右邊是高地址
在大端下則是
[01][02][03][04] 注意左邊是高地址,而右邊是低地址。
比較大端,小端的排序,采用大端方式存儲數據是比較符合人類的思維習慣。
因為網上有些人對大端,小端的認識不一樣;等下小編會寫一段golang的代碼來論證小端,大端排序的正確性。
網絡字節序,是指網絡傳輸的字節序,可能是大端序或者小端序,取決于軟件開始時通訊雙方的協議規定。TCP/IP協議RFC1700規定使用“大端”字節序為網絡字節序,開發的時候需要遵守這一規則。
在現有的平臺上Intel的X86采用的是Little-Endian,而像Sun的SPARC采用的就是Big-Endian。在C語言中,默認是小端(在有些單片機的實現中是基于大端,比如Keil 51C),Java是平臺無關的,默認是大端,golang也是默認使用大端。不同語言各自采用不同的字節序,相互之間的傳遞需要進行字節序的轉換工作。
最后,附上Golang對大小端的測試代碼
輸出:
a: 305419896
BigEndian: 12 34 56 78
b: 305419896
c: 305419896
tt: 0x12345678
//tt輸出0x123456,則表示Go使用大端。如果需要對小端測試只要把BigEndian改成LittleEndian即可,有興趣可以試試。
wxgzh:ludong86
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。