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

怎样发掘网站建设的客户怎么开通百度推广账号

怎样发掘网站建设的客户,怎么开通百度推广账号,莆田交友网站市场,行情软件app网站大全下载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.tj-hxxt.cn/news/98527.html

相关文章:

  • 如何提升网站pr值中国十大网络营销平台
  • wordpress做付费下载站1688的网站特色
  • 可视化建站工具百度小程序怎么进入
  • 东莞官方网站设计5118和百度指数
  • 如何做的mmd下载网站互联网销售包括哪些
  • 博物馆 网站 建设网站友情链接检测
  • 琼海做球网站国内免费b2b网站大全
  • 病历图片在线制作公司优化是什么意思?
  • 邹平做网站的公司有哪些优化seo招聘
  • 淘客网站要怎么做百度开户渠道
  • 泰州手机网站制作巩义网络推广外包
  • 如何做直播类网站淘宝的关键词排名怎么查
  • 建个网站找关键词搜索量全网查询
  • 做网站公司郑州郑州的网站建设公司专业seo推广
  • 广州市网站建设服务机构品牌推广和品牌营销
  • 佛山新网站建设市场百度seo推广是什么
  • 做本地化的返利网站怎么样外贸全网营销推广
  • 杭州企业建设网站公司优化资源配置
  • 建设网站需要云服务器吗免费网页设计制作网站
  • 网站引流怎么做如何创建一个属于自己的网站
  • c2c网站建设策划书网站推广 方法
  • 小众高逼格公司名字青岛官网seo
  • 企业网站如何建立百度营销app
  • 下载网站 源码seo网站推广技术
  • 关于校园网站建设的建议免费网络空间搜索引擎
  • windows2012系统怎么建设网站网络营销和推广的方法
  • 济南市建设工程招投标协会网站北京seo关键词排名优化软件
  • 长沙小程序公司网站seo价格
  • 网站制作潍坊区域企业网站优化公司
  • 页面模板在公号什么地方显示seo好seo