版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Tao_Ba/article/details/80713192
網絡字節序跟主機字節序有什么區別,這是我16年9月份校招面試騰訊被問到的一個問題,也是Linux服務器開發崗常考的面試題。
字節序分為大端字節序和小端字節序
- 大端字節序是指一個整數的高位字節(32-31bit)存儲在內存的低地址處,低位字節(0-7bit)存儲在內存的高地址處。
- 小端字節序是指一個整數的高位字節(32-31bit)存儲在內存的高地址處,低位字節(0-7bit)存儲在內存的低地址處。
現代PC大多采用小端字節序,所以小端字節序又被稱為主機字節序。
大端字節序也稱為網絡字節序。
即使是同一台機器上的兩個進程(比如一個由C語言,另一個由Java編寫)通信,也要考慮字節序的問題(JVM采用大端字節序)。
可編寫 byteorder.cpp 判斷機器字節序
void byteorder() { union { short value; char union_bytes[sizeof(short)]; }test; test.value = 0x0102; if (sizeof(short) == 2) { if (test.union_bytes[0] == 1 && test.union_bytes[1] == 2) cout << "big endian" << endl; else if (test.union_bytes[0] == 2 && test.union_bytes[1] == 1) cout << "little endian" << endl; else cout << "unknown" << endl; } else { cout << "sizeof(short) == " << sizeof(short) << endl; } return ; }
該程序在我的ubuntu跟win10下執行結果都是 little endian
原文地址:https://blog.csdn.net/Tao_Ba/article/details/80713192