自娱自乐:用python解决C++库农历数据修正过程

2023-11-09 14:59

本文主要是介绍自娱自乐:用python解决C++库农历数据修正过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之所以说是自娱自乐是因为,这个东西做出来基本没有共性,我是为了解决我自己 的问题而编的一个小程序。不过真是解决我的大问题,修正效率大大提高。

过程是这样的,我之前一直是手动修正C++的农历库,开始的时候要1个小时修正10年的数据,后来用excel做了一个(链接:https://blog.csdn.net/kim5659/article/details/113809339),速度提高到每10年半个小时左右。因为要用手机查找大小月份,再生成16位数据,再用手机进行验证。做了80年,实在有点烦了,今天躺在病床上(住院中)突然想到python有borax库,可以实现农历查询,那个数据应该是没错的,又学习了一下相关资料,还真找到了解决办法。

总体思路是:

把原16位数据转换成24位数据,中间的13位农历大小月份数据不要,再用python把正确的大小月份提取出来。替换掉原24位数据中。重新生成新的16进制农历月份数据。经验证数据没问题。下面是2009年数据的转换:

马上就可以得到正确的16进制数据,基本就是复制粘贴。

python虽然丢了有一段时间了,但python还是简单,不用考虑那么多,就算函数忘记了也不怕,现查现用都来的急,真是解决了我的大问题。虽然用了几个小时,一方面也复习了python,也加快了工作进度,真是个好东西。

代码虽然没什么用,也帖出来玩玩吧。

#!/usr/bin/python
# -*- coding:utf-8 -*-
from borax.calendars.lunardate import LCalendars  #农历库Yhex=input("请输入16进制数:") #输入16位数据
Nf=input("请输入年份:")   #输入16位数据所属年份a=list(LCalendars.iter_year_month(int(Nf))) #得到该月份所有农历月份的列表,大小月及闰月都有。
b=[] #用于存放月份数据。#下面是判断月份大小,大月为1小月为0,并存入b列表。
for i in range(0,len(a)):if a[i][1]==29:b.append("0")else:b.append("1")
if len(b)==12:  #因为无闰月为12个数据,加0补足13个月。b.append("0")
b.reverse()   #数据方向调换。#以下为处理原数据,保存低7位和高4位这些数据是正确的,中间13位月份数据不正确,丢弃。
linshi=[] #保存原16进制数转换的24位2进制数。
for j in range(len(Yhex)):binNU=format(int(Yhex[j],16),'b')    c='{:0>4d}'.format(int(binNU))    #格式化成4位2进制数。for m in range(4):linshi.append(c[m])           
linshiRight=linshi[17:]     #取出原数据的低7位
linshiLeft=linshi[:4]       #取出原数据的高4位
Afterbin=linshiLeft+b+linshiRight   #将三个数据合并成一个列表。
Afterbin1="".join(Afterbin[:])     #将列表转换成字符串#下面把24位2进制字符串转换成16进制。
lastHex=[]
for n in range(0,24,4): #一次取4位数linshiBin=Afterbin1[n:n+4]    linshiHex=hex(int(linshiBin, 2)) #转换成16进制linshiHex1=linshiHex[-1]         #因为数据有前缀,只取最后一位。lastHex.append(linshiHex1)   #把6个16进制数据放进列表。
print("".join(lastHex[:]))      #输出合并后的16进制数字符串。

 

这篇关于自娱自乐:用python解决C++库农历数据修正过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/kim5659/article/details/114156470
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/376847

相关文章

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.