网上关于农历计算有几种方法,其中一种方法叫打表法(好象是)。我采用的就是这种方法取的农历,但使用过程中发现其中的很多农历数据是错的。跟实际的农历根本对不上,对原码研究了两天,终于知道错误的原因了。问题就出在“表”里面。具体原理我在另两篇博文里有说明和原码。

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. 打表法计算农历错误数据处理之除夕修正

    这几天犯懒,没有心思研究原代码,农历除夕总显示"1月0日"这事又让人讨厌,所以今天采取了个权宜之计,"让"它显示正确除夕.其实也很简单,就是不改变原计算结果,只 ...

  2. crc16modbus查表法_查表法计算CRC16校验值

    /******************************************************************************* * Copyright (c) 201 ...

  3. crc16码表的使用_查表法计算CRC16校验值

    CRC16是单片机程序中常用的一种校验算法.依据所采用多项式的不同,得到的结果也不相同.常用的多项式有CRC-16/IBM和CRC-16/CCITT等.本文代码采用的多项式为CRC-16/IBM: X ...

  4. matlab kappa计算,MSA系列9:在使用交叉表法计算Kappa时,期望值是怎么计算出来的?...

    原标题:MSA系列9:在使用交叉表法计算Kappa时,期望值是怎么计算出来的? 在使用如下的交叉表法计算计数型测量系统的Kappa时,需要计算期望值,例如表中的15.7,34.3等数值. 这些期望值是 ...

  5. C语言与,或,非,同或,异或,左移,右移及优先级,查表法计算一个十进制数中1的个数

    1.与:& 2.或:| 3.非:~ 4.异或:^ 5.同或:~^ 6.左移:(<<) 7.右移:(>>) 注意:位运算符中求反运算"~"优先级最高, ...

  6. 常用crc查表法_请教查表法计算CRC的原理

    自己写过的, 希望对你有帮助 Cyclic Redundancy Check(CRC) 原理及实现 /// 1: 需求 在数据传送过程中,为了能够进行错误检测, 往往在数据后追加一些检测码, 当接受方 ...

  7. 常用crc查表法_查表法计算CRC

    (查表法)CRC检验码的计算过程 (1)将上次计算出的CRC校验码右移一个字节: (2)将移出的这个字节与新的要校验的字节进行XOR 运算: (3)用运算出的值在预先生成码表中进行索引,获取对应的值( ...

  8. 查表法实现反正切_关于python实现CRC32的应用和总结

    关于python实现CRC32的应用和总结 目前使用的Crc计算包含Crc32和Crc32mpeg2两种计算方式. 循环冗余检验 CRC 差错检测技术能够证明数据是完整的,是无差错的(只是非常近似的认 ...

  9. CRC查表法——表的由来及Java实现CRC8校验算法

    转载请标明出处: http://blog.csdn.net/xx326664162/article/details/51718857 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定 ...

  10. Lua 公历转农历--打表法

    文章目录 原理 代码(隔得有点久忘了哪一篇了,抱歉) 原理 打表的原理计算在这里:这个博主这一一篇 代码(隔得有点久忘了哪一篇了,抱歉) --- --- Created by Administrato ...

最新文章

  1. ArcGIS Desktop 10.1安装教程
  2. HTML5地区自转代码
  3. linux系统日志_如何使用 Linux Cockpit 来管理系统性能 | Linux 中国
  4. Java NIO系列教程(四) Scatter/Gather
  5. win7重置密码的方法
  6. 人工智能+眼科疾病辅助诊断(相关信息搜集)
  7. mplayer命令行模式下的使用方法
  8. 六个建议防止SQL注入式攻击
  9. 软件测试网上订餐系统,星月外卖网上订餐系统软件测试报告(正式).doc
  10. ros各级授权的区别
  11. linux内存扩展,linux 扩展内存
  12. 全桥逆变电路MOS管的关断尖峰怎么解决
  13. 计算机应用基础 教材 黄洪艺,高教社产品信息检索系统
  14. 客户期望,客户满意度,客户体验和客户忠诚度之间存在的联系
  15. Mysql数据库定时任务
  16. 云原生|Qunar 云原生容器化落地实践
  17. 实战三十九:鲍鱼年龄预测热力图相关性分析
  18. SpringMVC几个核心类(控制器核心类,加载配置文件核心类,处理url影射核心类,处理视图资源核心类,方法动态调用核心类)
  19. 互联网晚报 | 8月24日 星期二 | 京东二季度收入2538亿元;小米7亿元成立公寓管理公司;荣耀上线新零售平台“星耀商城”...
  20. ADI模拟电子器件基础(三)——仪表放大器

热门文章

  1. 优秀宝宝都有的6个特点
  2. 近五年计算机考研国家线、自划线汇总!
  3. kong_团结的面Kong:国际妇女节
  4. 物联网嵌入式系统开发应用软件公司怎么选择
  5. 互联网广告表现形式有哪几种?
  6. 关于datetimepicker 鼠标滚动调节日期变化遇到的问题
  7. 微信小程序在线考试项目开发-用户授权登录、身份信息获取
  8. Bytom BIP-32协议和BIP-44协议
  9. Spring Boot基础学习08 - Spring Boot整合Redis
  10. 0基础UnityURP渲染管线人物渲染_皮肤_头发_眼睛_各向异性_SSS之实践