网络传输大端序_大端、小端与网络字节序

大端(Big-Endian),小端(Little-Endian)以及网络字节序的概念在编程中经常会遇到,网络字节序(Network Byte Order)一般是指大端(Big-Endian,对大部分网络传输协议而言)传输,大端小端的概念是面向多字节数据类型的存储方式定义的,小端就是低位在前(低位字节存在内存低地址,字节高低顺序和内存高低地址顺序相同),大端就是高位在前,(其中“前”是指靠近内存低地址,存储在硬盘上就是先写那个字节)。概念上字节序也叫主机序。

一、大小端概念

1、首先大小端是面向多字节类型定义的,比如2字节、4字节、8字节整型、长整型、浮点型等,单字节的字符串一般不用考虑。

2、大端小端存储、传输、以及接收处理需要对应。

3、大端(Big-Endian)就是高字节(MSB)在前,内存存储体现上,数据的高位更加靠近低地址。(低地址存高字节)

4、小端(Little-Endian)就是低字节(LSB)在前,内存存储体现上,数据的低位更加靠近低地址。(低地址存低字节)

5、网络字节序一般是指大端传输。

二、大小端存储示例

假设一个32位 unsigned int型数据0x12 34 56 78,大小端8位存储方式如下:

大端存储方式为0x12 34 56 78

小端存储方式为0x78 56 34 12,如下图。

201205100033472415.jpg

三、常见CPU的大小端存储方式

不同CPU有不同的字节序类型,典型的使用小端存储的CPU有:Intel x86和ARM

典型的使用大端存储CPU有:Power PC、MIPS UNIX和HP-PA UNIX

注:

以上CPU需根据具体型号查询手册,有的CPU甚至可能同时能支持两种存储方式。

上文说的网络字节顺序则是表示网络传输时的字节序,按照TCP/IP协议是按照大端传输方式,也就是高字节先走(先传12,接着34,56,78),这跟本机存储和服务器存储没有关系,只要确保双方解析对应即可。

四、四个转换函数

C/C++中有如下四个常用的转换函数,这四个函数在小端系统中生效,大端系统由于和网络字节序相同,所以无需转换。

htons —— 把unsigned short类型从主机序转成网络字节序

ntohs —— 把unsigned short类型从网络字节序转成主机序

htonl —— 把unsigned long类型从主机序转成网络字节序

ntohl —— 把unsigned long类型从网络字节序转成主机序

以上函数包含头文件:

#if defined(_LINUX) || defined(_DARWIN)

#include

#endif

#ifdef WIN32

#include

#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

poi的sax模式读取xls_POI SAX 如何修改大excel 文件内容-问答-阿里云开发者社区-阿里云...

I think POI is using too much memory! What can I do?This one comes up quite a lot, but often the reason isnt what you might initially think. So, the first thing to check is - whats the source of the problem? Your file? Your code? Your environment? Or …

cupload怎么保存图片_原生js的图片上传插件cupload

插件描述:支持图片预览、像素限制、大小限制、多图上传、更新模式下页面初始化加载图片更新时间:2020-09-25 00:23:49更新说明:添加 删除时,同时删除服务器图片的功能,文档提供php实例。添加参数Url参数更新 {ele: &q…

mysql 半同步_mysql 主从同步 与 半同步

mysql主从同步复制定义主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。通过配置文件,可以指定复制所有的数据库,某个数据…

mysql内存数据库性能_Mysql内存表配置及性能测试

centos7 mysql数据库安装和配可以参考一下文章,基本照做就可以了(我选的方法二):http://www.cnblogs.com/starof/p/4680083.html说到内存表,首先有两个概念简单区分下:1.临时表;2.内存表;临时表与内存表的区…

mysql字符集排序规则_MySQL原理 - 字符集与排序规则

任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集)。这些字符如何排序呢?决定字符排序的规则就是排序规则。查看内置字符…

mysql服务器默认操作字符集,如何在mysql中找到默认服务器字符集?

Using MySQL on FreeBSD 8.2. How do I find out the default server character set? Is there some command I can run or file I can check?UPDATEActually I want to know how to find both the default server character set and the current server character set.解决方…

mysql异常修复_MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed...

问题一 Table xx is marked as crashed and last (automatic?) repair failed有开发找到我,说数据库坏了,连不上数据库,看了下 MySQL 的错误日志,报错如下:Error: Table ./db_name/table_name is marked as crashed a…

mysql 改变表的类型吗_mysql中修改表类型所带来的问题探讨

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎。如果你要使用全文索引,那必须使用myisam,那如何修改修改MySQL的引擎为INNODB呢,下面介绍一个修改方法。对于MySQL数据库,如果你要使用事务以及行级锁就必须使用…

mysql 字符串 截取字母_MySQL字符串函数:字符串截取

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。1. 字符串截取:left(str, length)mysql> …

建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...

学生选课数据库SQL语句45道练习题:一、 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)…

java mysql jsp分页代码_JAVA/JSP学习系列之六(MySQL翻页例子)

JAVA/JSP学习系列之六(MySQL翻页例子)更新时间:2006年10月13日 00:00:00 作者:一、运行前准备下载了mysql的jdbc驱动(一个jar文件)并加载在CLASSPATH(方法见《JAVA/JSP学习系列之一(JDK安装) 》)(如果找不到,请从本站下载)建一个MySQL数据库…

mysql内置含糊_mySQL入门04 内置函数

【欢迎关注,点赞,收藏,私信交流】字符串函数查看字符的ascii码值ascii(str),str是空串时返回0select ascii(a);查看ascii码值对应的字符char(数字)select char(97);拼接字符串concat(str1,str2...)select concat(12,34,ab);包含字…

mysql与citespace_CiteSpace与MySQL数据库的连接-科学网—博客.PDF

CiteSpace与MySQL数据库的连接-科学网—博客.PDFCiteSpace与MySQL数据库的连接1,2 3李杰 ,陈超美1.上海海事大学海洋科学与工程学院2.上海海事大学科技情报研究所3. Drexel University- College of Computing and InformaticsCiteSpace科技文本挖掘及可视化知识分享…

gcn代码pytorch_GCN的简单实现(pytorch)

import torch import torch.nn as nn import torch.nn.functional as Fimport networkx as nxdef normalize(A , symmetricTrue):# A AIA A torch.eye(A.size(0))# 所有节点的度d A.sum(1)if symmetric:#D D^-1/2D torch.diag(torch.pow(d , -0.5))return D.mm(A).mm(D)e…

mysql的check语言_check在SQL语句中的意思是什么?

展开全部在SQL中 CHECK 的意思:约束CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么32313133353236313431303231363533e58685e5aeb931333365646261该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定…

当电压放大电路的开路增益和输出电阻固定后_放大器的设计基础

放大器是电子电路(尤其是模拟电路)中的主要构件之一,使用放大器,它们会提高信号电平。放大器是一个术语,用于描述增加输入信号强度的电路。放大器广泛用于从音频应用到射频应用的各个领域中。但是,对于所有放大器,无论…

mysql数据库 auto_increment_mysql数据库 auto_increment

MySQL内核月报 2014.09-MySQL 捉虫动态auto_increment背景:Innodb引擎使用B_tree结构保存表数据,这样就需要一个唯一键表示每一行记录(比如二级索引记录引用)。Innodb表定义中处理主键的逻辑是:1.如果表定义了主键,就使用主键唯一…

javascript 嵌入python_通过Python将区块链数据嵌入Javascript,这是正确的方法吗?

你说得对。此页面是使用JavaScript异步填充的,因此BeautifulSoup和类似的工具将无法看到您试图获取的特定内容。但是,如果您记录浏览器的网络流量,您可以看到一些(XHR)httpget请求被发送到restapi,restapi以JSON形式提供其结果。这个JSON恰好包含您要查找的信息。它实际上会向不…

linux 嵌入式 快照_Linux 系统之Systemd

标签:子贡问为仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”——孔子(春秋)《论语卫灵公》【工欲善其事,必先利其器】掌握一门技术,知道其发展历程是非常重要的…

mysql php 乱码问题_解决php与mysql中文乱码问题

感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!MysqL对中文的支持程度还是很有限的,尤其是新手,但凡出现乱码问题,就会头大。乱码问题1:用PHPmyAdmin操作MysqL数据库汉字显示正常&…