16进制储存的农历信息的正确打开方式

农历不像公历一样有规律可循,通过程序就可以直接计算出来,农历的计算方法一般是通过查表法(类似于查字典的方式)获取。

网上有很多关于农历年份的信息资料,大多是以16进制来储存。如下lunarYearArr数组存储的是农历2010-2019年份的信息,数组中的元素均为16进制,看不出与农历年份有任何关系。但是将这些16进制数转换成2进制后,就可以巧妙地将它们与农历年份关联起来。

// 存储农历2010-2019年份的信息
let lunarYearArr = [ 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9,0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930 ];

1、正确打开方式:

将16进制转换成2进制,转换后的2进制应为20位,不够20位的在左侧用0补齐,从右到左每4位为一组,如下:

xxxx xxxx xxxx xxxx xxxx
20-17 16-13 12-9 8-5 4-1

其中:

1-4位: 表示该年份有无闰月,没有的话,1-4位都为0;有的话,将1-4为对应的2进制转换为10进制就是对应的闰月月份。

5-16位: 表示该年份除闰月外,其余正常月份是大月还是小月,1表示大月,每月有30天;0表示小月,每月有29天;1月到12月分别对应二进制的16位到5位。

17-20位: 值得一说的是,在第17-20位中只有第17位在满足一定条件时有意义,其余的3位主要是为了分组好看,没有什么实际意义。而让第17位有意义的条件是所在年份有闰月,此时,第17位表示的是该年份中的闰月是大月还是小月,1表示大月,0表示小月。(也可以这么说,当该年份没有闰月时,17-20位没有意义)

2、验证一下:

2.1、0x15176存储的是农历2017年的信息

转换成2进制后为:1 0101 0001 0111 0110,有17位,补齐20位后为:0001 0101 0001 0111 0110

1-4位: 不为0,且0110对应的10进制为6,所以农历2017年有闰月,且闰月为6月。

5-16位: 农历2017年1-12月份的大小月情况如下:

二进制的16-5位 0 1 0 1 0 0 0 1 0 1 1 1
月份 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
大小月 小月 大月 小月 大月 小月 小月 小月 大月 小月 大月 大月 大月

17-20位: 农历2017年有闰月,所以第17位有意义,第17位为1,所以闰6月为大月,有30天。

因此,关于农历2017年的信息如下:农历2017年有个闰6月,闰6月有30天,一年有13个月,每个月的天数:29、30、29、30、29、29、30(闰6月)、29、30、29、30、30、30,全年一共384天。

2.2、0x052b0存储的是农历2018年的信息

转换成2进制后为:101 0010 1011 0000,有15位,补齐20位后为:0000 0101 0010 1011 0000

1-4位: 都为0,所以农历2018年没有闰月。

5-16位: 农历2018年1-12月份的大小月情况如下:

二进制的16-5位 0 1 0 1 0 0 1 0 1 0 1 1
月份 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
大小月 小月 大月 小月 大月 小月 小月 大月 小月 大月 小月 大月 大月

17-20位: 农历2018年没有闰月,所以第17-20位无意义。

因此,关于农历2018年的信息如下:农历2017年没有闰月,一年有12个月,每个月的天数:29、30、29、30、29、29、30、29、30、29、30、30,全年一共354天。

参考文献:

[1] 关于日历实现代码里0x04bd8, 0x04ae0, 0x0a570的解释

16进制储存的农历信息的正确打开方式相关推荐

  1. 16进制 ksh_AIX系统中如何统计进程打开的文件数目

    作者:李烨楠 中国建设银行 来自微信公众号:平台人生 环境: AIX 6.1 AIX7.1 前言: 用户有时需要统计一个进程打开的文件数目,比如,在当前打开文件句柄使用量是否超过用户资源限制(/etc ...

  2. 16进制的文件头信息搜集

    扩展名 文件头标识(HEX) 文件描述 123 00 00 1A 00 05 10 04 Lotus 1-2-3 spreadsheet (v9) file 3gg; 3gp; 3g2 00 00 0 ...

  3. 串口编程 - ascii字符与16进制的相互转换

    串口编程 - ascii字符与16进制的相互转换 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 串口编程 - ascii字 ...

  4. C语言:16进制字符串转int

    文章目录 前言 代码 前言 今天在C语言中 用到16进制字符串转int整型场景,顺便网上搜了一下 发现有网友用了非常复杂的方法,还去判断字母啥的 用到什么累加的,笔者一想 16进制字符串转int类型 ...

  5. notepad++查看16进制文件

    notepad++软件在查看代码的时候很方便,但是想查看16进制格式的文件时,默认打开是乱码.下面就演示一下如何给notapad++安装HEX插件,安装好插件之后,就可以直接查看16进制文件了. He ...

  6. Hex Workshop(16进制编辑利器) 6.7.2绿色版

    软件名称: Hex Workshop 6.7.2绿色版(16进制编辑利器) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 1.8MB 图片预览: 软件简介 ...

  7. 如何批量生成16进制偶数标

    平时的标签制作过程中,很多产品生产序号或者是编号都会用到流水号.最近就有朋友向我们咨询,如果想要十六进制的偶数流水号,该怎么实现呢?如果自己计算排列也是可以实现的,但是会非常麻烦.小编下面就给大家分享 ...

  8. Python实现16进制转10进制算法及源码

    Python实现16进制转10进制算法及源码 16进制是一种常用的数学计数方式,而在Python中将16进制数据转换为10进制数据是非常简单和快捷的.下面我将展示如何使用Python实现16进制转10 ...

  9. 进制数转换器的VB算法实现(2/8/10/16进制数可以相互转换)

    在VB6中新建一个工程,当前窗体默认为form1,添加一个框架控件frame.几个文本框控件text.几个标签控件label.两个timer计时器.三个按钮控件.添加一个窗体form2.一个模块mod ...

  10. 14.线程诊断_cpu占用高(top、ps H -eo pid,tid,%CPU | grep tid、clear、jstack pid)-------注意jstack输出的线程信息是16进制的

    线程和虚拟机栈是息息相关的. 这里提供了一些线程诊断的一些案例, 有些时候我们需要学习掌握一些工具,有利于诊断我们的线程情况 来看第一个案例,有一个应用程序,cpu占用居高不下,影响了其他程序,怎么去 ...

最新文章

  1. Cadence 16.6 安装记录
  2. 你了解 Java 的 jstat 命令吗?
  3. C语言与C++ 中bool关键字的矛盾解决
  4. 如何通过BIPlatform完成多维报表以及图形配置
  5. in the java search_elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)
  6. 汇编程序的编辑、编译、连接与执行(附带DOSBox安装)
  7. linux运行sqlite,Linux上安装sqlite3
  8. LookUpEditPopup自动调整宽度
  9. presentation编程软件_编程难学?web相关知识,跟着淼哥学php全栈之路6
  10. mysql 索引 范围扫描_MySql学习笔记(六):扫描范围
  11. fiddler一直报错502
  12. 接口测试常见问题及答案
  13. 惠普计算机如何用u盘引导启动不了系统安装系统,惠普笔记本进BIOS设置U盘启动教程...
  14. java 图片深度_图像的色彩值称为图像的颜色深度,黑白图像的颜色深度为( )位。...
  15. php极光推送获取cid返回404错误,极光推送心得
  16. HTML学生个人网站作业设计:动漫网站设计——悬崖上的金鱼姬(5页) HTML+CSS 简单DIV布局网页模板代码
  17. 算法图解之狄克斯特拉算法实现
  18. 光遇服务器修复暴风眼刷新了吗,光遇暴风眼怎么进 光遇暴风眼刷新时间
  19. 第三届江西省高校网络安全技能大赛 部分wpCrypto的疑惑
  20. 剑麻的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. leafletjs 热力图_leaflet.js自定义热力图效果实例
  2. JDK集合源码解析剖析
  3. 2018北京java面试心得体会(一年经验)
  4. cocos2d-x学习资源整理(持续更新)
  5. PIE Engine系列1 遥感数据下载器的实现(含源码)
  6. android 调出键盘表情_keyboard dialog 仿微博表情键盘输入框,keyboarddialog
  7. 谷歌浏览器截图_【插件推荐】一键滚动截图整个网页,支持二次编辑的免费工具...
  8. 可用和平精英画质助手iApp源码+全开源
  9. windows bat打印机打印测试页
  10. 《离散数学》题库大全及答案