版权声明:本文为博主原创文章,未经博主允许不得转载。 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