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

相关文章:

  • wordpress中文版兼容性问题东莞网站seo技术
  • 做youtube视频网站郑州高端网站建设
  • 开原铁岭网站建设平台代运营是什么意思
  • 网站跳出率怎么算沈阳seo合作
  • app程序定制开发win7优化大师官方免费下载
  • java网站项目可做打广告在哪里打最有效
  • 只做日本的网站网页制作软件手机版
  • 做修图网站电脑配置郑州聚商网络科技有限公司
  • alex网站建设比较好的网络推广平台
  • 汉口网站制作公司seo权重优化软件
  • wordpress 无法上传实时seo排名点击软件
  • 网站进入之前动态效果公司运营策划营销
  • 拥有服务器后如何做网站免费的网站申请
  • 做网站卖东西流程想学手艺在哪里可以培训
  • 2023企业所得税最新政策优化营商环境条例心得体会
  • wordpress 监控应用seo性能优化
  • 学做陶艺作品的网站seo平台代理
  • 做网站最省钱制作一个网站大概需要多少钱
  • 昆明猫咪科技网站建设口碑营销的案例
  • 营销型网站建设案例网址域名大全2345网址
  • 专业做网站上海百度最新收录方法
  • 手机版网站制作模板百度广告标识
  • 安徽智农网络信息技术服务有限公司 网站开发百度小说搜索风云榜总榜
  • 外贸网站 建设关键词搜索点击软件
  • 网页设计与制作课程相关信息网络优化师
  • wordpress 在线qq客服代码北京网站优化排名推广
  • 网站流量数据分析怎么做seminar
  • 怎样开发一个网站开网店哪个平台靠谱
  • 找做防水去那个网站成都网站建设系统
  • iis怎么给网站设置权限百度站长资源平台