字節
字節是操作系統及其I/O設備使用的基本數據類型,當JVM和操作系統之間傳遞數據時,需要將其它的數據類型拆分成構成他們的字節。
字節順序
儘管字節大小已經被確定了,但是它的排列順序問題一直沒有被廣泛的認同,也就是大小端的問題。什麼是大端?什麼是小端?
基本數據類型 | 所佔字節數 |
---|---|
byte | 1 |
char | 2 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
表中明確的知道了除boolean外每個基本類型所佔的字節數,如何對這個字節序列進行排列這就是我們需要了解的大小端問題。
如果一個int數字的最高字節優先存儲於內存地址中,則爲大端,反之最低字節優先存儲於內存地址中,則爲小端。當然,字節序列的問題一般不由軟件設計者決定,通常取決於硬件設計。
但是在IP協議中規定了使用大端的網絡字節序列。所有在IP分組報文的協議部分中使用的多字節數組必須先在本地主機的字節序列和通用的網絡字節序列之間進行轉換。在nio中,字節序列使用java.nio.ByteOrder進行轉換。
我在實際開發過程當中,需要將其它類型轉換爲字節序列時,需要注意大小端,並且給對接的同事統一大小端,以免出錯。
在真正開始學習ByteBuffer之前,我們先看看它有哪些方法: