当前位置: 首页 > news >正文

北京做招聘网站的公司徐州市住房和城乡建设局网站

北京做招聘网站的公司,徐州市住房和城乡建设局网站,软件开发涵盖网站开发吗,淘宝网站seo服务概述 字节序是指多字节数据在内存中的存储顺序。主要有两种字节序#xff1a;大端序、小端序。 大端序#xff1a;即Big-Endian#xff0c;高位字节存放在低地址处#xff0c;低位字节存放在高地址处。比如#xff1a;16位整数0x1234#xff0c;在大端序下会以0x12 0x34的…概述 字节序是指多字节数据在内存中的存储顺序。主要有两种字节序大端序、小端序。 大端序即Big-Endian高位字节存放在低地址处低位字节存放在高地址处。比如16位整数0x1234在大端序下会以0x12 0x34的形式存储。 小端序即Little-Endian低位字节存放在低地址处高位字节存放在高地址处。比如16位整数0x1234在小端序下会以0x34 0x12的形式存储。 需要注意的是不同计算机系统可能使用不同的字节序来存储多字节的数据类型。当这些系统之间进行通信时如果不正确处理字节序问题就可能会导致数据解析错误。比如如果一台机器是小端序另一台是大端序它们之间的数据交换如果没有经过适当的转换接收方可能会误解发送方的数据。 检测字节序 在C中检测字节序有几种不同的方法。下面分别进行介绍。 1、使用类型转换。下面的代码封装了一个IsLittleEndian的函数用于判断是否为小端序。在该函数中首先初始化一个32位无符号整数uiValue其值为0x01020304。然后使用reinterpret_cast将uiValue的地址转换为char*类型的指针以便逐字节访问。检查uiValue的第一个字节是否为0x04如果是则系统是小端序否则系统是大端序。 #include iostream using namespace std;bool IsLittleEndian() {unsigned int uiValue 0x01020304;char* pValue reinterpret_castchar*(uiValue);// 如果第一个字节是0x04则是小端序return (pValue[0] 0x04); }int main() {if (IsLittleEndian()){cout Little-Endian endl;}else{cout Big-Endian endl;}return 0; } 2、使用联合体。联合体允许我们在相同的内存位置存储不同的数据类型这样可以方便地检查多字节数据类型的字节顺序。在下面的代码中我们首先使用联合体将一个32位无符号整数unsigned int i和一个4个字符的数组char c[4]共享同一块内存。然后初始化联合体中的unsigned int i为0x01020304。最后通过char c[4]访问unsigned int i的第一个字节。检查第一个字节是否为0x04如果是则系统是小端序否则系统是大端序。 #include iostream using namespace std;bool IsLittleEndian() {union {unsigned int i;char c[4];} value {0x01020304};// 如果第一个字节是0x04则是小端序return (value.c[0] 0x04); }int main() {if (IsLittleEndian()){cout Little-Endian endl;}else{cout Big-Endian endl;}return 0; } 3、使用标准库函数。在某些情况下可以使用标准库提供的函数来检测字节序。比如在POSIX兼容的系统中可以使用endian.h头文件中的宏来检测字节序。具体如何使用可参考下面的示例代码。 #include iostream #include endian.h using namespace std;int main() { #if __BYTE_ORDER __LITTLE_ENDIANcout Little-Endian endl; #elif __BYTE_ORDER __BIG_ENDIANcout Big-Endian endl; #elsecout Unknown endianness endl; #endifreturn 0; } 主机字节序与网络字节序 主机字节序是指当前计算机系统中多字节数据类型的存储顺序。主要有上面介绍的两种字节序大端序和小端序。 在网络协议中为了确保数据的一致性通常规定使用一种统一的字节序。最常见的网络字节序是大端序这是因为大端序与人类阅读数字的习惯一致便于调试和理解。比如在TCP/IP协议族中所有多字节的数据类型都要求使用大端序进行传输。 字节序转换 在跨平台或异构网络环境中不同的系统可能使用不同的字节序。如果发送方和接收方的字节序不一致且没有进行适当的转换会导致数据解析错误。因此在网络编程中必须确保数据在发送前转换为网络字节序在接收后转换回主机字节序。 C标准库提供了几个用于字节序转换的函数。对于POSIX兼容系统比如Linux、Mac等这些函数定义在arpa/inet.h头文件中。对于Windows系统这些函数定义在winsock2.h头文件中。 htons()和htonl()用于将主机字节序转网络字节序Host to Network Short/Long。 ntohs()和ntohl()用于将网络字节序转主机字节序Network to Host Short/Long。 在下面的示例代码中我们使用htons和htonl将主机字节序的hostShort、hostLong转换成了网络字节序的netShort、netLong。然后再将网络字节序的netShort、netLong转换回主机字节序的convertedShort、convertedLong。注意在Windows下使用Visual Studio编译这段程序时需要在工程中链接ws2_32.lib库否则链接时会报错。 #include iostream #include winsock2.h using namespace std;int main() {// 主机字节序转为网络字节序uint16_t hostShort 0x1234;uint32_t hostLong 0x12345678;uint16_t netShort htons(hostShort);uint32_t netLong htonl(hostLong);cout Host short: hex hostShort endl;cout Network short: hex netShort endl;cout Host long: hex hostLong endl;cout Network long: hex netLong endl;// 再将网络字节序转回主机字节序uint16_t convertedShort ntohs(netShort);uint32_t convertedLong ntohl(netLong);cout Converted short: hex convertedShort endl;cout Converted long: hex convertedLong endl;return 0; }
http://www.zqtcl.cn/news/857535/

相关文章:

  • 简述建设一个网站的具体过程接做名片的网站
  • 怎样建立自己网站网站产品数据如何恢复
  • 用wordpress建立电商网站用Off做网站
  • 网站建设公司不赚钱ui设计软件培训学校
  • 网站项目策划书模板wordpress修改模版
  • 房地产手机网站模板电脑建立网站
  • 网站自适应手机代码网络服务机构的网站
  • 系统网站重庆智能建站模板
  • wordpress适合优化吗宝塔 wordpress优化
  • 怎么利用网站做外链接怎样做公司网站介绍
  • 广州网站优化渠道木门网站模板
  • 手机网站菜单设计wordpress加联系方式
  • 网站管理助手怎么使用多种郑州网站建设
  • 汉中网站建设费用外贸网站服务商
  • 苏宿工业园区网站建设成功案例色流网站如何做
  • 北沙滩网站建设公司电子商务网站建设管理论文
  • 公司备案证查询网站查询系统网页设计html代码大全及含义
  • 成都开发网站建设做网站一般会出现的问题
  • 企业网站设计布局方式如何在社交网站上做视频推广方案
  • 惠城网站建设服务做1688网站需要懂英语吗
  • 请人做网站要多少钱搜索引擎优化概述
  • 郑州中森网站建设免费网站app生成软件
  • 做诚信通网站seo新手快速入门
  • 做网站怎么去找客户带会员中心WordPress免费主题
  • 网站建设资费安平县护栏网站建设
  • 做视频网站侵权吗个体户网站备案
  • 苏州姑苏区建设局网站智慧团建登录官网手机版
  • 如何搭建一个视频网站广告制作方案
  • 网站策划ps苏州建站公司速找苏州聚尚网络
  • 网站备案 关闭客户制作网站时的问题