一文带你秒懂 字节序(byte order),比特序(bit order),位域(bit field)

字节序,比特序,位域

  • 前言
  • 引出疑惑
  • 字节序
  • 比特序
  • 卡-比特的发送和接收顺序
    • 大端序发送给小端序
    • 小端序发送给大端序
  • 位域
  • 定义协议的万能公式

前言

??不总结出来睡不着觉啊md,本来想着1点就能写完,没想到3点才写完

??本专栏知识点是通过零声教育的线上课学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接 C/C++后台高级服务器课程介绍 详细查看课程的服务。

引出疑惑

字节序

??就比如上图的194,用大端读是194,用小端读是35,即从左往右看和从右往左看,值是不同的。做了测试之后发现,上面4个函数都没有对比特序做转换。而且写了这么久的代码了,也没见系统提供比特序转换的函数,这就很奇怪了。
??我小端接收大端的数据,大端的比特序和小端的顺序不一样,那读出来的字面值肯定不一样啊,咋明明没有对比特序做任何处理,程序安然无恙呢p>

??在我一开始接触字节序的时候我就在想会不会有比特序这种东西,会不会大小端是反的,不知道读者是否有过这种思考。

卡-比特的发送和接收顺序

??既然在程序中无感知,那么要么是内核,要么是 卡硬件帮我们处理了。比特的发送、接收顺序是指一个字节中的bit在 络电缆中是如何发送、接收的。在以太 (Ethernet)中,是的发送顺序,也就是。

??可以看出发送顺序其实是按照小端序的顺序来发送的。从图中我们可以发现,先发低位bit再发高位bit,这样

??牢记这句人能看懂的话:

小端序发送给大端序

??我们发现大小端序不同的话,abc对应的值也会不同

??举个例子,在websocket的第一个字节中,拿FIN举例,在大端序中它是最低地址0,在小端序中它是最高地址7。

一文带你秒懂 字节序(byte order),比特序(bit order),位域(bit field)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月7日
下一篇 2022年10月7日

相关推荐