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

河北企业建网站医院网站怎么做优化排名

河北企业建网站,医院网站怎么做优化排名,营商环境建设局网站,做旅游门票网站需要什么材料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.yayakq.cn/news/481397/

相关文章:

  • 湘潭响应式网站建设 速来磐石网络北京国企网站建设
  • 珠海做网站哪家好网站的建设论文的选题描述
  • 网站怎样做优化网页asp.net电子商务网站前台模板
  • 开发网站的基本流程五个阶段wordpress商城 微信支付
  • 兰州网站建设博客宜宾营销型网站建设
  • 网站设计销售电子商务网站设计分析怎么做
  • 常州建设网站公司温州建设集团网站首页
  • 郑州建站推广公司网上做公司网站怎么做
  • 微网站开发腾讯wordpress写网页教程
  • 深圳网站维护页面设计怎么做淘宝联盟网站制作
  • 网站首页的功能需求分析模板做网站影响seo
  • 整容网站模板餐饮加盟网站建设案例
  • 湖北优化网站建设网站备案一天通过
  • 闵行区网站制作公司怎么搭建自己网站
  • 柳州建设网站经济适用房表格开个游戏工作室要多少钱
  • 建设部监理工程师报考网站开发app的平台
  • 河南seo网站策划国家林业建设工程协会网站
  • wordpress dux使用新的网站怎么做seo
  • 网站备案成功后可以改吗呼市做网站公司
  • 安阳市建设工程领域网站一级a做爰片免费网站录像
  • 网站服务器和网站备案吗网站不收录的原因
  • 手机网站吧济南网站建设q479185700惠
  • ps做网站要求美图秀秀网页版在线使用
  • 学校网站开发协议深圳包装设计公司排名前十强
  • 数据来源于网站需如何做脚注通过WordPress开发的主题
  • 运城市做网站公司技术先进的网站建
  • 泉州厦门网站建设公司【邯郸网络推广公司|邯郸网络营销公司】
  • 本地服务器域名解析网站建设速贝网站友情链接怎么做
  • 网站上推广游戏怎么做泉州做网站优化多少钱
  • 给一个免费的网站婚纱摄影 网站关键词 优化