当前位置: 首页 > 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.dinnco.com/news/23007.html

相关文章:

  • wordpress主题模版谷歌seo招聘
  • 昆明猫咪科技网站建设网站seo推广平台
  • 自己网站联系电话修改怎么做腾讯广点通广告投放平台
  • 做航空产品的网站有哪些百度收录查询代码
  • 顶呱呱网站建设价格网站自动秒收录工具
  • myeclipse做网站更改名字怎么让百度收录网址
  • 做it行业招标网站软件开发需要多少资金
  • 可以写代码的网站有哪些问题吗网站分析报告
  • 做app和网站哪个比较好用本地推广平台
  • 优化网站排名推荐公司seo推广 课程
  • 做app的网站广州seo公司排名
  • 宁波网站设计哪家公司好合肥网站推广电话
  • 阿里云备案 网站服务内容数字营销课程
  • 曲靖网站推广百度seo最成功的优化
  • python 网站建设 拖拽式黄页网站推广公司
  • 网站建设自查维护报告百度推广销售
  • 武汉网站制作与建设北京学校线上教学
  • 青岛海川建设集团有限公司网站网站优化师
  • 网站设计哪家seo优化排名工具
  • 网站的轮播图怎么做平台seo
  • 在苏州找学生做家教在哪个网站快速网站搭建
  • 重庆承越网站建设公司厦门人才网官网招聘信息网
  • wordpress转载微信文章东莞网络优化服务商
  • 新闻网站建设需要注意些什么谷歌google play官网下载
  • 萍乡做网站新产品推广方案怎么写
  • 做美容美容院网站的费用网络营销策划论文
  • wordpress wp_signon百度seo排名优化是什么
  • 做搜索网站网络营销郑州优化推广公司
  • 网站建设与推广话术公众号关键词排名优化
  • 网站建设培训南宁seo优化