大小端及网络字节序

大小端及网络字节序什么是大端模式 小端模式 大端 和 小端 表示多字节值的哪一端存储在该值的起始地址处 小端存储在起始地址处 即是小端字节序 大端存储在起始地址处 即是大端字节序 具体的说 大端字节序 BigEndian 最高有效位存于最低内存地址处 最低有效位存于最高内存处 小端字节序 LittleEndian 最高有效位存于最高内存地址 最低有效位存于最低内存处

什么是大端模式、小端模式

判断字节序

  可以通过下面的小程序测试自己的机器是大端字节序还是小端字节序

#include 
  
    union { char ch; int i; }un; int main(void) { un.i = 0x; if(un.ch == 0x12) { printf("big endian\n"); } else { printf("small endain\n"); } return 0; 
  

  在测试程序中,使用联合体的原因是:union型数据所占的空间等于其最大的成员所占的空间。对union型成员的存取都是相对于该联合体基地址的偏移量为0处开始,也就是联合体的访问不论对哪个变量的存取都是从union的首地址开始的。通过检测第一个字节存放的数据即可得出结果。

网络字节序

字节序转换函数

 #include 
  
    //将主机字节序转换为网络字节序 unit32_t htonl (unit32_t hostlong); unit16_t htons (unit16_t hostshort); //将网络字节序转换为主机字节序 unit32_t ntohl (unit32_t netlong); unit16_t ntohs (unit16_t netshort); 说明:h -----host;n----network ;s------short;l----long。 
  

例如:

#include 
  
    #include 
   
     int main() { unsigned int x = 0x; unsigned char *p = (unsigned char *)&x; printf("%0x_%0x_%0x_%0x\n",p[0],p[1],p[2],p[3]); unsigned int y = htonl(x); p = (unsigned char*)&y; printf("%0x_%0x_%0x_%0x\n",p[0],p[1],p[2],p[3]); return 0; } 
    
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204452.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:15
下一篇 2026年3月19日 下午8:16


相关推荐

  • 理解HashMap(jdk8)[通俗易懂]

    理解HashMap(jdk8)

    2022年4月2日
    39
  • FM Bandwidth IQ Rate Sample Rate

    FM Bandwidth IQ Rate Sample Rate在labview中,编写FM的程序经常会涉及到以下几个名词,他们的关系是怎样的呢?BandwidthdeviationfrequencymodulatingfrequencyIQRateSampleRate首先关于带宽Bandwidth他是由以下公式决定的。请参考Carson’sRule。FMBandwidth=2(Δf + fm)

    2022年10月17日
    4
  • 常用的几款抓包工具[通俗易懂]

    常用的几款抓包工具[通俗易懂]常用的几款抓包工具!标签:软件测试软件测试方法软件测试学习原创来自于我们的微信公众号:软件测试大师最近很多同学,说面试的时候被问道,有没有用过什么抓包工具,其实抓包工具并没有什么很难的工具,只要你知道你要用抓包是干嘛的,就知道该怎么用了!一般对于测试而言,并不需要我们去做断点或者是调试代码什么的,只需要用一些抓包工具抓取发送给服务器的请求,观察下它的请求时间还有发送内容等等,…

    2022年6月11日
    53
  • 腾讯元宝怎么从自己文件库查找资料

    腾讯元宝怎么从自己文件库查找资料

    2026年3月13日
    2
  • Allegro PCB转换成PADS方法

    Allegro PCB转换成PADS方法Cadence 很强大 PADS 很方便 很多企业都在用这两个 EDA 软件 有的人习惯 Cadence 有的人习惯 PADS 有些公司用 Cadence 有些公司用 Pads 有时我们需要将两种软件格式的 PCB 和原理图相互转换 下面是将 CadenceAlleg 的 PCB 文件转化为 PADS 的 PCB 文件的方法 Cadence16 6 PADSVX 0 一 添加用户变量 1 变量名 AEX BIN ROOT 值 PADS 软件中 translators 软件的 bin 目录路径比如我的

    2026年3月18日
    2
  • UFW防火墙

    UFW防火墙查看 ubuntu 版本 cat etc issue 或者 lsb release a 防火墙由于 Linux 原始的防火墙工具 iptables 过于繁琐 所以 ubuntu 默认提供了一个基于 iptable 之上的防火墙工具 ufw ubuntu 系统默认已安装 ufw ubuntu9 10 默认的便是 UFW 防火墙 它已经支持界面操作了 在命令行运行 ufw 命令就可以看到提示的一系列可进行的操作 可检查防火墙的状态

    2026年3月20日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号