网络字节序跟主机字节序有什么区别

xiaoxiao2025-09-15  10

网络字节序跟主机字节序有什么区别,这是我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 版权声明:本文为博主原创文章,转载请附上博文链接!

转载请注明原文地址: https://www.6miu.com/read-5036365.html

最新回复(0)