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

怎样发掘网站建设的客户360收录提交入口网址

怎样发掘网站建设的客户,360收录提交入口网址,手机网站 源码,安县网站制作1.背景 之前的标题是【JAVA反序列化QT序列化内容】,觉得太大太绕,最后改为现在的标题。  本篇内容是对用JAVA解析QT(用的是QDataSteam)所输出(序列化)的内容的小结。 本文涉及类型包括:QString…

1.背景

 之前的标题是【JAVA反序列化QT序列化内容】,觉得太大太绕,最后改为现在的标题。
 本篇内容是对用JAVA解析QT(用的是QDataSteam)所输出(序列化)的内容的小结。
本文涉及类型包括:QString、QDateTime。

2. 相关技术

 相关技术可以从2个方面阐述:QT的序列化和JAVA的文件读取。

(2.1)QT序列化

 QT序列化相关文档:Serializing Qt Data Types,下面表格中内容是为摘录:

Qt Data TypesSerializing
QDateJulian day (quint32)
QDateTime- Date (QDate)
- Time (QTime)
- 0 for Qt::LocalTime, 1 for Qt::UTC (quint8)
QStringIf the string is null: 0xFFFFFFFF (quint32)
Otherwise: The string length in bytes (quint32) followed by the data in UTF-16
QTimeMilliseconds since midnight (quint32)

对于相同技术栈的QT,序列化和反序列化,只需设置适合的QT版本即可。
但对于JAVA,就没那么简单了,特别是组合类型,例如上图中的QDateTime、QString。

  1. QDateTime类型内容,分为3个部分,固定为9字节:日期(4字节描述的朱利安天数)、时间(4字节描述的从0点的毫秒数)和时间规格标识(1字节)。
  2. QString类型内容,分为2个部分,长度为变长:字符串长度(4字节)和数据内容(按UTF-16)编码。
(2.2)JAVA的文件读取
(2.2.1)JAVA读取QString
final long length1 = this.fileUtil.readAsDword(fisRaw, isBigEndian, TAG0);
final String title = this.fileUtil.readAsStr(fisRaw, (int)length1, "utf-16", TAG0);

代码中,需要关注2点:

  1. 字节序(方法readAsDword的参数isBigEndian即是)
  2. 字符串的编码(方法readAsStr的参数"utf-16"即是)
(2.2.2)JAVA读取QDateTime
// Julian day (quint32)
final long julianDayNumber1 = this.fileUtil.readAsDword(fisRaw, isBigEndian, TAG0);
// Milliseconds since midnight (quint32)
final long mss1 = this.fileUtil.readAsDword(fisRaw, isBigEndian, TAG0);
// 0 for Qt::LocalTime, 1 for Qt::UTC (quint8)
final int flag1 = (255-this.fileUtil.readAsByte(fisRaw, TAG0));Date dt11 = this.dtUtil.getDate((int)julianDayNumber1);
Date dt12 = this.dtUtil.getTime((int)mss1);

代码的核心有2点:

  1. 按照朱利安按天(Julian day)转换成公历日期
  2. 毫秒数转时间

(1)依据朱利安日数获取公历日期

/** 依据朱利安日数获取公历日期 */
public Date getDate(int jdn) {Calendar cal = Calendar.getInstance();cal.set(-4712, 0, 1);cal.add(Calendar.DAY_OF_YEAR, jdn);return cal.getTime();
}

对于(-4712, 0, 1)中的参数,涉及2点:第1是朱利安天的定义,第2是JAVA系统对年、月、日的序号的约定。

(2)依据毫秒数(从零点开始)计算时间

public Date getTime(int ms) {Calendar cal = Calendar.getInstance();cal.set(0, 0, 0, 0, 0, 0);cal.set(Calendar.MILLISECOND, ms);return cal.getTime();
}

3. 小结

本文涉及跨技术栈QT & JAVA,既然是不同的2个系统,则存在及较多不一致的约定。
例如QT系统中不存在年数为0,但JAVA系统是许可的。年、月、日的序号也不一致。

http://www.zhongyajixie.com/news/34941.html

相关文章:

  • 网站建设的大公司推广链接点击器
  • 凡科网站怎么做外链抖音搜索优化
  • 企业网站开发流程简述安徽seo
  • 销售网站的销量统计怎么做微信推广引流方法
  • 连云港公司做网站博客优化网站seo怎么写
  • 今日武汉大事件公众号seo排名优化
  • 帮卖驾驶证的做网站模板网站
  • 网站设计软件开发企业营销网站制作
  • 外国网站开发18款禁用网站app直播
  • 做youtube视频网站免费广告推广平台
  • 上海专业网站建设费用百度推广管理平台登录
  • 网站建设与管理大作业总结培训机构加盟店排行榜
  • 用php做网站教程域名交易域名出售
  • 做网站编辑累不累平台做推广的技巧
  • 建设网站公司价格推广资讯
  • 专业网站制作软件郑州seo全网营销
  • c 做的比较牛逼的网站叫什么网络推广员
  • 什么网站可以免费做视频的软件媒体代发网站
  • 保险做的好的网站百度电脑网页版
  • 外贸网站建设的重要性搜索引擎优化学习
  • 青岛做教育的网站建设新闻稿件
  • 网站公安备案长尾关键词挖掘工具爱网站
  • 梵高网站建设中国seo关键词优化工具
  • 重庆公司网站 技术支持手机网站建设价格
  • 创建软件网站百度搜索推广
  • 网站开发小作业qq推广
  • 福州做网站网络营销课程实训报告
  • 做旅游网站的关注与回复营销型网站的分类
  • 怎么做好网站开发、设计网络推广法
  • wordpress阿里云邮箱福州百度首页优化