现在的CPU累加器一次能够装载至少4个字节的一个整数,那么字节在内存中的排列顺序不同,导致累加器使用的结果不同,这就是字节序问题 。
例如:
我们存储一个int类型的数字;int a = 1;

主机字节序分为两种:

  1. 大端字节序
    整数的高位字节存放在内存的低地址位。
  2. 小端字节序
    整数的低位字节存放在内存地址的低地址为。

    测试主机为大端还是小端
#include<stdio.h>void Test()
{union myunion{short a;char b[2];}test;test.a = 0x0102;if(b[0] == 1 && b[1] == 2)printf("大端\n");else if(b[0] == 2 && b[1] == 1)printf("小端\n");elseprintf("未知\n");
}

由于不同主机之间的字节序存储方式不同,这就导致,如果发送方与接收方主机字节序存储方式不同,所以在通信时,需要先将主机字节序进行统一,这就是主机字节序装换为网络字节序。

#include<netinet/in.h>
//长整型主机字节序转换为网络字节序
unsigned long int htonl(unsigned long int hostlong);//短整型主机字节序转换为网络字节序
unsigned short int htons(unsigned short int hostshort);//长整形网络字节序装换为主机字节序
unsigned long int ntohl(unsigned long int hostlong);//短整形网络字节序装换为主机字节序
unsigned short int ntohs(unsigned short int hostshort);

注意:长整型通常是用于转换IP地址,短整型主要转换端口号。

Linux---主机字节序与网络字节序相关推荐

  1. linux网络编程一:主机字节序与网络字节序的的判断

     linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...

  2. 【Linux】主机字节序和网络字节序

    (一)问题提出:为什么要有主机字节序和网络字节序的存在? 现在大多数PC机器都是小端字节序(小端存储),也称为主机字节序:但不排除有大端PC机器的存在. 若在两台字节序不同的主机上传输数据时,接收端将 ...

  3. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs

    Part 1: htons函数具体解释      在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 i ...

  4. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】

    (转自:https://blog.csdn.net/kulala082/article/details/53431473) Part 1: htons函数具体解释 在Linux和Windows网络编程 ...

  5. Linux网络编程——字节序与网络字节序

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

  6. linux大端小端命令,linux的大小端、网络字节序问题

    linux的大小端.网络字节序问题 总结:1.80X86使用小端法,网络字节序使用大端法. 2.二进制的网络编程中,传送数据,最好以unsigned char, unsigned short, uns ...

  7. 字节序 主机字节序与网络字节序互相转换

    目录 1.什么是字节序? 2.字节序分类 3.为什么要有大端字节序和小端字节序? 4.主机字节序和网络字节序 5.主机字节序与网络字节序的转换 6.怎么判断自己的主机是小端字节序还是大端字节序呢? 7 ...

  8. 主机字节序和网络字节序

    1.大端字节序和小端字节序: 大端字节序存储时值的高位存储在较小的地址,值的低位存储在较大的地址. 小端字节序存储时值的高位存储在较大的地址,值的低位存储在较小的地址. 以0x12345678为例: ...

  9. 本地字节序和网络字节序

    本地字节序和网络字节序 字节序指不同的CPU访问内存中多字节数据的时候,存在大小端的问题,并且一定是访问多字节数据的时候才会存在大小端的问题,如果CPU访问的是字符串,则不存在大小端的问题: 那么如何 ...

  10. 本地字节序与网络字节序的相互转换(IP地址、端口号)

    一般数据在内存中是按照字节存储的,存储的方式分为大端和小端.在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式.因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! ...

最新文章

  1. C# 字段 属性 方法 三霸主齐上阵
  2. java条件配置,三、使用JAVA必备条件—环境配置
  3. Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符
  4. 深入理解this机制系列第三篇——箭头函数
  5. 转盘脚本编辑器学习1
  6. lnmp解析php,LNMP之 php解析
  7. 案例展示自定义C函数的实现过程
  8. 时间序列分析工具箱——sweep
  9. Ubuntu 定时锁屏3.0
  10. linux下c语言编程实例
  11. mac使用svn命令基础篇
  12. Python求绝对值的三种方法
  13. 适合于图像处理方向的SCI期刊杂志列表【部分转载】
  14. 图片分享和加载失败的原因之一
  15. 在C语言中怎样定义一个字符串并输入输出
  16. solr8.3集群配置
  17. 【原创】关于联想Y400适配器和电池同时使用无法开机的问题
  18. 搭建Windows 家庭用无线局域网WLAN (Wireless Local Area Network)
  19. CSDN日报20170712——《AI 大行其道,你准备好了吗?》
  20. 打造自己的linux桌面,亲手打造自己的Linux桌面环境

热门文章

  1. 快速实现MySQL迁移到Redis
  2. 纳德拉:微软正计划“终极移动设备”
  3. onInterceptTouchEvent / onTouchEvent响应事件的详析
  4. Lync Server多SIP域环境和简单URL地址部署
  5. VMware下ubuntu全屏显示
  6. 第6章 循环、批量传送和条件转移-1.34h
  7. 2020 RocketMQ安装
  8. phtml php,PHTML Encoder
  9. https://akaedu.github.io/book/ch32s02.html
  10. 怎么测试本地网页在不同分辨率下电脑显示效果_4K商用超值利器 飞利浦272P7VPTKEB显示器评测...