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

郑州建网站建站系统源码

郑州建网站,建站系统源码,企业注册类型,世界摄影网站1.大小端数据简介 大小端(Endianness)是计算机体系结构的一个术语,它描述了多字节数据在内存中的存储顺序。以下是大小端的定义和它们的特点: 大端(Big-Endian) 在大端模式中,一个字的最高有效…

1.大小端数据简介

大小端(Endianness)是计算机体系结构的一个术语,它描述了多字节数据在内存中的存储顺序。以下是大小端的定义和它们的特点:

大端(Big-Endian)
在大端模式中,一个字的最高有效字节(MSB,即最左边的那位)存储在最低的内存地址处,而最低有效字节(LSB,即最右边的那位)存储在最高的内存地址处。

例如,假设有一个16位的数字 0x1234,其在内存中的存储顺序如下:

地址增加方向 -->

[ 12 ] [ 34 ]

其中 [12] 是高字节,存储在低地址处;[34] 是低字节,存储在高地址处。

小端(Little-Endian)
在小端模式中,情况正好相反:一个字的最低有效字节存储在最低的内存地址处,而最高有效字节存储在最高的内存地址处。

继续上面的例子,16位的数字 0x1234 在小端模式下的存储顺序如下:

地址增加方向 -->

[ 34 ] [ 12 ]

其中 [34] 是低字节,存储在低地址处;[12] 是高字节,存储在高地址处。

2.小端数据收发

假设我们现在有一个UDP头的数据结构如下所示。

    //UDP协议头typedef struct{quint16 type;               //报文类型quint16 num;                //报文序号,取值范围为0~65535quint32 len;                //报文长度quint16 srcAddr;            //信源地址quint16 dstAddr;            //信宿地址quint8  year;               //发送时间  年份后两位   UTC时间quint8  month;quint8  day;quint8  hour;quint8  minute;quint8  second;}UdpHeader;

数据发送:组包。

QByteArray pack(const Protocol::UdpHeader &header)
{QByteArray byte;byte.append((char*)&(header.type),2);byte.append((char*)&(header.num),2);byte.append((char*)&(header.len),4);byte.append((char*)&(header.srcAddr),2);byte.append((char*)&(header.dstAddr),2);QString format = "yy-MM-dd-hh-mm-ss";QDateTime dateTime = QDateTime::currentDateTime();dateTime.setTimeSpec(Qt::LocalTime);QDateTime utcTime = dateTime.toUTC();QString strUtcTime = utcTime.toString(format);QStringList timeList = strUtcTime.split('-');quint8 year = timeList.at(0).toInt();quint8 month = timeList.at(1).toInt();quint8 day = timeList.at(2).toInt();quint8 hour = timeList.at(3).toInt();quint8 minute = timeList.at(4).toInt();quint8 sec = timeList.at(5).toInt();byte.append(year);byte.append(month);byte.append(day);byte.append(hour);byte.append(minute);byte.append(sec);return byte;
}

数据接收:拆包

void unPack(const QByteArray &byte, Protocol::UdpHeader &header)
{if(byte.size() != UDP_HEADER_LEN){return;}memcpy(&header,byte.data(),sizeof(Protocol::UdpHeader));
}

3.大端数据收发

还是上面的头例子。
数据发送:组包。
使用QDataStream类作为辅助,设置setByteOrder为大端序列。

QByteArray packBigEndian(const Protocol::UdpHeader &header)
{QByteArray byte;QDataStream stream(&byte,QIODevice::WriteOnly);stream.setByteOrder(QDataStream::BigEndian);stream<<(header.type);stream<<(header.num);stream<<(header.len);stream<<(header.srcAddr);stream<<(header.dstAddr);QString format = "yy-MM-dd-hh-mm-ss";QDateTime dateTime = QDateTime::currentDateTime();dateTime.setTimeSpec(Qt::LocalTime);QDateTime utcTime = dateTime.toUTC();QString strUtcTime = utcTime.toString(format);QStringList timeList = strUtcTime.split('-');quint8 year = timeList.at(0).toInt();quint8 month = timeList.at(1).toInt();quint8 day = timeList.at(2).toInt();quint8 hour = timeList.at(3).toInt();quint8 minute = timeList.at(4).toInt();quint8 sec = timeList.at(5).toInt();stream<<year;stream<<month;stream<<day;stream<<hour;stream<<minute;stream<<sec;return byte;
}

数据接收:拆包。
对于多字节的数据,都需要单独使用qToBigEndian转换为大端。

void unPackBigEndian(const QByteArray &byte, Protocol::UdpHeader &header)
{if(byte.size() != UDP_HEADER_LEN){return;}memcpy(&header,byte.data(),sizeof(Protocol::UdpHeader));header.type = qToBigEndian(header.type);header.num= qToBigEndian(header.num);header.len= qToBigEndian(header.len);header.srcAddr= qToBigEndian(header.srcAddr);header.dstAddr= qToBigEndian(header.dstAddr);
}
http://www.tj-hxxt.cn/news/80570.html

相关文章:

  • wordpress 门户网站源码最新社会舆情信息
  • 网站建设与管理期中考seo外链优化
  • 网站建设方案书人员资金安排苏州seo关键词优化价格
  • 上海注册公司代办机构哪家好网站优化关键词价格
  • 帝国网站管理系统后台eclassconfig.php不存在域名seo查询
  • 免费html网页模板素材网站临沂网站建设优化
  • 万维网 网站 主页 网页如何建站
  • php租车网站源码网站快速优化排名排名
  • 佛山电商网站制作阿拉营销网站
  • 网站主页面最开始在哪里做会计培训班初级费用
  • 网站建站侵权怎么办软文撰写
  • 深圳微商城网站制作报价什么是seo优化?
  • 如何把网站做跳转浏览器链接地址东莞好的网站国外站建设价格
  • 宁波做公司网站公司百度站长收录
  • 买空间送网站武汉服装seo整站优化方案
  • 办公网新闻上传网站开发百度seo快排软件
  • 达州市建设规划网站系统优化软件哪个好
  • 做母婴网站外包推广公司
  • 王也最后结局西昌seo快速排名
  • 电商网站活动推广搜狗推广平台
  • 蚌埠seo推广seo教程自学网
  • 济南自适应网站建设网络营销的表现形式有哪些
  • 知识付费网站建设自己怎么创建网站
  • 网站域名备案多长时间今日网站收录查询
  • 主机怎么做网站服务器济南优化哪家好
  • 网站突然掉排名百度竞价多少钱一个点击
  • 零代码建站杭州搜索引擎推广排名技术
  • 如何将自己 做的网站发布网上企业网站推广的方法有
  • 网站怎么申请微信支付接口网站推广软件
  • 衡水网站建设设计知乎seo优化