Red de conocimientos turísticos - Guía para elegir días propicios según el calendario chino - ¿Alguien tiene el código del programa en lenguaje C para convertir el calendario solar al calendario lunar?

¿Alguien tiene el código del programa en lenguaje C para convertir el calendario solar al calendario lunar?

Resulta que tengo los recursos. Este es mi programa original. Modos de compresión de datos, transformaciones, puntos de referencia, etc. Los diseñé todos yo mismo. Puede convertir con precisión el calendario gregoriano al calendario lunar y el calendario lunar al calendario gregoriano. Al mismo tiempo, también proporciona una base de datos lunar de diseño propio con rutinas y herramientas de extracción de información lunar, y puede personalizar el rango de años (1600-7000).

Archivo de encabezado generado por el extractor de información del calendario lunar (aquí limitado a la duración, el lapso es de solo 10 años)

/************ ****** *************************************

*? ¿Información del calendario lunar (consultar superficie)? *

*?Hora generada: 25/12/2014? *

****************************************** ************/

#ifndef? _LUNARDATA_H

¿#Definición? _LUNARDATA_H

¿#Definición? ¿Año de inicio? 1600?//Definir año de inicio de datos (calendario gregoriano)

#Definición? ¿Fin de año? 1610?//Definir el año en que terminan los datos (excluyendo este año)

¿Corto? iPreLeapIndex =-1; //El índice del mes bisiesto lunar antes del año de inicio corresponde al número de serie en iPreMonth. Si es -1, significa que no hay mes bisiesto.

//A partir de octubre del calendario lunar del año anterior al año inicial, el primer día de cada mes corresponde al número ordinal del año inicial.

//Los números ordinales menores que cero indican antes del año de inicio.

¿Corto? ipremont[3]= {-44, -15, 15};

//El número ordinal del primer día del primer mes lunar del año calendario gregoriano (el número ordinal del año especifica Nuevo Día del año como 0).

¿No está firmado? ¿Ciel? uLunarNewYearOrdinal[10]= {

44, 33, 22, 41, 30, 48, 37, 27, 46, 34?//1600-1609

};

//Matriz de tamaño de mes, desde el primer mes de "START_YEAR" hasta el diciembre (bisiesto) del año anterior a "END_YEAR".

//Los doce y trece meses de cada año están representados por dos bytes. Los dos dígitos más altos se establecen en 10, seguidos del mes bisiesto, de enero a diciembre. El mes más pequeño va primero,

//1?00 o 1? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? ¿incógnita? x

//1?El mes de diciembre es 0 y el mes de 13 es 1. De enero a diciembre, el número de días de un mes es 0 y el número de días de un mes es 1.

//Tenga en cuenta que si no hay un mes bisiesto, la posición del mes es 12 y la duración total es 15. Si hay un mes bisiesto, la posición del mes es 13 y la duración total es 16.

¿No está firmado? ¿corto? LunarMonthDX[10]={

0x4A5D, 0x492D, 0xB92B, 0x4A95, 0xB695, 0x46AA, 0x4AD5, 0xAAB5, 0x44BA, 0x4A5B? //1600-1609

};

//Matriz de meses bisiestos, 4 bits representan la información del mes bisiesto de un año lunar y 1 byte representa dos años adyacentes.

//?x? ¿incógnita? ¿incógnita? xx? ¿incógnita? ¿incógnita? x

//?Año ①Año ②

¿No está firmado? ¿Ciel? Mes bisiesto[5]={

0x00, 0x20, 0x90, 0x06, 0x00? //1600-1609

};

//Matriz de 24 términos solares, representada por 12 bytes por año, es decir, un byte por mes (Nota: este algoritmo de compresión es adecuado para datos posteriores a 1600).

//Por ejemplo, el término solar en 1901 era:

//¿Enero? ¿Febrero, marzo, abril, mayo, junio? julio, agosto, septiembre 65438 octubre? ¿Noviembre? 65438 febrero

//?6,?21,?4,?19,6,?21,5,?21,6,?22,6,?22,8,?23,8 , ?24,8,?24,8,?24,8,?23,8,?22

//?9,?6,11,?4,9,6,10,? ,9,?7,9,?7,7,?8,7,?9,7,?9,7,?9,7,?8,7,?15

// Osamu ? ¿Gran resfriado? ¿El comienzo de la primavera? ¿lluvia? ¿Asustado? ¿equinoccio de primavera? ¿Qing Ming? ¿Guyu? ¿Un largo verano? ¿Xiaoman? ¿Miscanto? ¿Solsticio de verano? ¿Tienes un poco de calor? ¿Calor? principios de otoño? ¿verano? ¿Ciervo blanco? ¿Equinoccio de otoño? ¿Rocío frío? ¿Primera helada? ¿principio del invierno? ¿Xiaoxue? ¿Nieve intensa? Solsticio de Invierno

//De esta forma, los datos correspondientes a los dos términos solares de cada mes son inferiores a 16. Utilizando un byte para almacenar los datos del primer término solar en la posición alta y los datos de el segundo término solar en la posición baja, se puede obtener la siguiente Tabla:

¿No está firmado? ¿Ciel? SolarTerms[120]={

0x96, 0x96, 0x87, 0x97, 0x87, 0x97, 0x87, 0x96, 0x96, 0x96, 0x96, 0x96, //1600

0xA6, 0xA5 ,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x97,0x96,0x96,? //1601

0x96, 0xA5, 0x88, 0x87, 0x88, 0x87, 0x87, 0x87, 0x96, 0x87, 0x96, 0x97,? //1602

0x96, 0xA6, 0x78, 0x87, 0x78, 0x87, 0x88, 0x87, 0x97, 0x87, 0x96, 0x87,? //1603

0x96, 0x96, 0x87, 0x97, 0x87, 0x97, 0x87, 0x96, 0x96, 0x96, 0xA6, 0x96,? //1604

0xA6, 0xA5, 0x87, 0x87, 0x87, 0x87, 0x87, 0x97, 0x96, 0x96, 0x96, 0x96,? //1605

0x96, 0xA5, 0x88, 0x87, 0x88, 0x87, 0x87, 0x87, 0x96, 0x87, 0x96, 0x97,? //1606

0x96, 0xA5, 0x78, 0x87, 0x78, 0x87, 0x88, 0x87, 0x97, 0x87, 0x96, 0x87,? //1607

0x96, 0x96, 0x87, 0x97, 0x87, 0x96, 0x87, 0x96, 0x96, 0x96, 0xA6, 0x96,? //1608

0xA6, 0xA5, 0x87, 0x87, 0x87, 0x87, 0x87, 0x97, 0x96, 0x96, 0x96, 0x96? //1609

};

// Cada año se cuentan nueve, flores de ciruelo, flores de ciruelo y canículas (según el día de Año Nuevo de ese año).

//El primer año calendario es de treinta y nueve años (aplicable después del 1600 d.C.).

//En la matriz, cada fila representa un año, hay cuatro años, nueve años, cinco años, nueve años... omitidos, y cada nueve años difiere en 9 días. De igual forma, si se omiten dos o nueve, el monto mediano es 10 días después de la etapa inicial.

La correspondencia es la siguiente (omitida entre paréntesis):

//Tres y nueve? (¿49? ¿Cinco o nueve? ¿Sesenta y nueve? ¿Siete o nueve? ¿Ocho o nueve? ¿99)? ¿No más ciruelas? ¿Primera vez en cuclillas? (alto)? ¿El otoño pasado? ¿diecinueve? (29) Nota: el 19 de septiembre es el solsticio de invierno.

¿No está firmado? ¿corto? temporada extrema[60]= {

8, 165, 190, 199, 219, 355, 7, 159, 196, 193, 223, 355,?//1600-1601

7,164,191,198,218,355,8,159,198,193,223,355,?//1602-1603

8,164,193,198,218,355, 7,158,199,202,222,355,?//1604-1605

7,163,194,197,227,355,8,158,189,202,222,355, //1606-1607

8, 163, 196, 197, 227, 355, 7, 167, 190, 201, 221, 354?//1608-1609

}

#endif? //_LUNARDATA_H