首页 > 其他分享 >网络字节序

网络字节序

时间:2023-11-28 14:11:23浏览次数:24  
标签:小端 字节 int 网络 位存于 内存 大端

1、网络字节序 (Network Byte Order)和本机转换
1、大端、小端字节序
“大端”和”小端”表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节序;具体的说:

①大端字节序(Big Endian):最高有效位存于最低内存地址处,最低有效位存于最高内存处;
②小端字节序(Little Endian):最高有效位存于最高内存地址,最低有效位存于最低内存处。
网络字节序:大端字节序
网络上传输的数据都是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它将这个字节作为高位字节还是低位字节处理,是一个比较有意义的问题:

UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待,这就要求发送端发送的第一个字节是高位字节;而在发送端发送数据时,发送的第一个字节是该数值在内存中的起始地址处对应的那个字节,也就是说,该数值在内存中的起始地址处对应的那个字节就是要发送的第一个高位字节

所以:网络字节序就是大端字节序, 有些系统的本机字节序是小端字节序, 有些则是大端字节序, 为了保证传送顺序的一致性, 所以网际协议使用大端字节序来传送数据。

/* 确定你的电脑是大端字节序还是小端字节序 */

include <stdio.h>

int check1()
{
int i = 1; //1在内存中的表示: 0x00000001
char *pi = (char *)&i; //将int型的地址强制转换为char型
return *pi == 0; //如果读取到的第一个字节为1,则为小端法,为0,则为大端法
}

int main()
{
if (check1() == 1)
printf("big\n");
else
printf("little\n");

return 0;

}

第二种方法,我们用联合结构解决,其本质差异不大
/* 确定你的电脑是大端字节序还是小端字节序 */

include <stdio.h>

int check2()
{
union test {
char ch;
int i;
}test0;
test0.i = 1;
return test0.ch == 0;
}
int main()
{
if (check1() == 1)
printf("big\n");
else
printf("little\n");

return 0;

}

标签:小端,字节,int,网络,位存于,内存,大端
From: https://www.cnblogs.com/Casdfgh/p/17861841.html

相关文章

  • 什么是网络拥塞及解决办法简介
    网络拥塞是指在计算机网络中由于网络资源(如带宽、内存等)的有限性,当网络负载超过其容量时,数据包可能会在网络中延迟或丢失,从而导致网络性能下降的现象。网络拥塞通常会导致网络延迟增加、数据包丢失率上升,甚至可能导致网络连接中断。网络拥塞通常发生在网络通信量较大的情况下,例如:1......
  • 解决AndroidStudio 模拟器无网络连接
    解决AndroidStudio模拟器无网络连接主要原因是安卓模拟器的dns和电脑的dns不一致引起的,可以修改安卓模拟器的dns即可找到安卓模拟器的名字修改安卓模拟器dns命令 #Pixel7_API_30_fei这个是你自己模拟器的名字,也就是第一步中找的的模拟器名字./emulator-avdPixel......
  • 虚拟机VM如何配置网络
    虚拟机配置网络涉及到多个方面,包括网络连接类型、IP地址设置、子网掩码、网关设置等。以下是一般情况下虚拟机网络配置的步骤,具体步骤可能因使用的虚拟化平台而有所不同。以下示例以常见的虚拟化软件VMware为例:VMware虚拟机网络配置:1.打开虚拟机软件:打开VMwareWorkstation......
  • 循环神经网络 —— LSTM 有状态模型(stateful LSTM)和无状态模型(stateless LSTM)
     相关参考:训练后的LSTM模型在进行预测时的初始h_n和c_n是什么或应该怎么设置?  Keras中对RNN网络的statefull和stateless设置:链接:https://keras.io/zh/getting-started/faq/#how-can-i-use-stateful-rnns   ===============================================  必须要承认,由......
  • 网络工程师精华篇,50种网络故障及解决方法大集合
    上午好,我的网工朋友。做网络工程师,自然离不开网络,而日常工作中能搞多少大项目?最常见的其实还是网络故障的处理了。怎么最高效地排查网络故障?怎么简单几招通网?今天就从基础的入手,分享一篇经典好文,说说50种最常见的网络故障解决办法。今日文章阅读福利:《H3C华三交换机常见故障排错指......
  • 神经网络入门篇:详解随机初始化(Random+Initialization)
    当训练神经网络时,权重随机初始化是很重要的。对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,如果把权重或者参数都初始化为0,那么梯度下降将不会起作用。来看看这是为什么。有两个输入特征,\(n^{[0]}=2\),2个隐藏层单元\(n^{[1]}\)就等于2。因此与一个隐藏层......
  • 查看网络ip,网络连接模式
    vmware提供了三种网络连接模式:桥接模式虚拟机直接连接外部物理网络的模式,主机起到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络是可见的nat模式虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换设备对ip进行转换,虚拟机通过共享主机ip可以访问外部网络,但......
  • 接收网络包的过程——从硬件网卡解析到IP层
    当一些网络包到来触发了中断,内核处理完这些网络包之后,我们可以先进入主动轮询poll网卡的方式,主动去接收到来的网络包。如果一直有,就一直处理,等处理告一段落,就返回干其他的事情。当再有下一批网络包到来的时候,再中断,再轮询poll。这样就会大大减少中断的数量,提升网络处理的效率,这......
  • 33基于playwright编写网络抓包工具
     fromplaywright.sync_apiimportsync_playwrightr'''可以利用playwright框架抓浏览器网络请求包,抓响应包输出会有识别不了的字符编码报错(暂无解决,或者不用解决)。'''#回调函数获取请求url、请求头、请求体defon_request(request):print(f'RequestURL:{request......
  • 2023-2024-1 20232301《网络》第4周总结
    教材学习内容总结教材学习中的问题和解决过程问题1:没有明白安全生态系统和自然生态系统的联系问题1解决方案:询问chatgpt,其给出了详细的回答,如下:安全生态系统(CybersecurityEcosystem)和自然生态系统(NaturalEcosystem)之间的联系主要体现在借鉴自然生态系统的原则和概念,以加强......