C++ 打表法计算农历错误数据处理
网上关于农历计算有几种方法,其中一种方法叫打表法(好象是)。我采用的就是这种方法取的农历,但使用过程中发现其中的很多农历数据是错的。跟实际的农历根本对不上,对原码研究了两天,终于知道错误的原因了。问题就出在“表”里面。具体原理我在另两篇博文里有说明和原码。
https://blog.csdn.net/kim5659/article/details/113806160(二进制取位操作。(愚蠢的人:书到用时方恨少))
https://blog.csdn.net/kim5659/article/details/113802774(一个疑问:关于与的计算的迷惑。)
下面就看如何纠正错误:
1、原数据解析(拿2021年数据举例):
红框内为原16进制数解析后到到的13个月大小月情况。和实际情况对比图如下:
上图中红框内这实际2021年的大小月情况,没有闰月13月数据不用管。可以看出有6个月数据是不对的。下面要根据实际情况重新计算,如下图:
红字即为新的16进制数。放回代码内,经验证数据正确,也就是说原代码的农历计算方法是没问题的,但这个“表”有问题导致农历计算不对。这个代码我查了一下,最早出现是07年,但我一下07年的数据也是不对的。所以具体出错原因就不知道了。
我重新按照中华万年历重新把21年到30年的“表”重新核对了一遍,全都是错的,我做了更改,其他年份没改,这是个耗时间的活,一下午也就改10年。我用excel写了公式还方便一点,但也要一个个对,还要一个个验证,保证正确。有空再把其他的改了。
但也有一个疑问:现在的农历算法是不是一定正确,也就是说现在计算的结果,十几二十年后是不是还是正确的,这个我还真不知道。
整个流程是这样的:
21-30年修改后数据如下:
0x02AB4C,0x055AC1,0x2AD936,0x03694A,0x6752BD,
0x0392D1,0x0325C6,0x564BBA,0x0655CD,0x02AD43, //2021-2030
原代码中还有一个问题,就是除夕这天农历日期不正确,正常应该农历腊月廿九或农历腊月三十,但那天计算的结果为1月0日,每一年的除夕都是,原因还不清楚。估计也会很快查清楚,或者找到方法解决。
C++ 打表法计算农历错误数据处理相关推荐
- 打表法计算农历错误数据处理之除夕修正
这几天犯懒,没有心思研究原代码,农历除夕总显示"1月0日"这事又让人讨厌,所以今天采取了个权宜之计,"让"它显示正确除夕.其实也很简单,就是不改变原计算结果,只 ...
- crc16modbus查表法_查表法计算CRC16校验值
/******************************************************************************* * Copyright (c) 201 ...
- crc16码表的使用_查表法计算CRC16校验值
CRC16是单片机程序中常用的一种校验算法.依据所采用多项式的不同,得到的结果也不相同.常用的多项式有CRC-16/IBM和CRC-16/CCITT等.本文代码采用的多项式为CRC-16/IBM: X ...
- matlab kappa计算,MSA系列9:在使用交叉表法计算Kappa时,期望值是怎么计算出来的?...
原标题:MSA系列9:在使用交叉表法计算Kappa时,期望值是怎么计算出来的? 在使用如下的交叉表法计算计数型测量系统的Kappa时,需要计算期望值,例如表中的15.7,34.3等数值. 这些期望值是 ...
- C语言与,或,非,同或,异或,左移,右移及优先级,查表法计算一个十进制数中1的个数
1.与:& 2.或:| 3.非:~ 4.异或:^ 5.同或:~^ 6.左移:(<<) 7.右移:(>>) 注意:位运算符中求反运算"~"优先级最高, ...
- 常用crc查表法_请教查表法计算CRC的原理
自己写过的, 希望对你有帮助 Cyclic Redundancy Check(CRC) 原理及实现 /// 1: 需求 在数据传送过程中,为了能够进行错误检测, 往往在数据后追加一些检测码, 当接受方 ...
- 常用crc查表法_查表法计算CRC
(查表法)CRC检验码的计算过程 (1)将上次计算出的CRC校验码右移一个字节: (2)将移出的这个字节与新的要校验的字节进行XOR 运算: (3)用运算出的值在预先生成码表中进行索引,获取对应的值( ...
- 查表法实现反正切_关于python实现CRC32的应用和总结
关于python实现CRC32的应用和总结 目前使用的Crc计算包含Crc32和Crc32mpeg2两种计算方式. 循环冗余检验 CRC 差错检测技术能够证明数据是完整的,是无差错的(只是非常近似的认 ...
- CRC查表法——表的由来及Java实现CRC8校验算法
转载请标明出处: http://blog.csdn.net/xx326664162/article/details/51718857 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定 ...
- Lua 公历转农历--打表法
文章目录 原理 代码(隔得有点久忘了哪一篇了,抱歉) 原理 打表的原理计算在这里:这个博主这一一篇 代码(隔得有点久忘了哪一篇了,抱歉) --- --- Created by Administrato ...
最新文章
- ArcGIS Desktop 10.1安装教程
- HTML5地区自转代码
- linux系统日志_如何使用 Linux Cockpit 来管理系统性能 | Linux 中国
- Java NIO系列教程(四) Scatter/Gather
- win7重置密码的方法
- 人工智能+眼科疾病辅助诊断(相关信息搜集)
- mplayer命令行模式下的使用方法
- 六个建议防止SQL注入式攻击
- 软件测试网上订餐系统,星月外卖网上订餐系统软件测试报告(正式).doc
- ros各级授权的区别
- linux内存扩展,linux 扩展内存
- 全桥逆变电路MOS管的关断尖峰怎么解决
- 计算机应用基础 教材 黄洪艺,高教社产品信息检索系统
- 客户期望,客户满意度,客户体验和客户忠诚度之间存在的联系
- Mysql数据库定时任务
- 云原生|Qunar 云原生容器化落地实践
- 实战三十九:鲍鱼年龄预测热力图相关性分析
- SpringMVC几个核心类(控制器核心类,加载配置文件核心类,处理url影射核心类,处理视图资源核心类,方法动态调用核心类)
- 互联网晚报 | 8月24日 星期二 | 京东二季度收入2538亿元;小米7亿元成立公寓管理公司;荣耀上线新零售平台“星耀商城”...
- ADI模拟电子器件基础(三)——仪表放大器