社区
Qualcomm 开发者论坛
帖子详情
有谁知道有关日历中的阴历,在BREW是怎么处理的呢?
万里独行
2011-04-18 05:58:44
代码中,往一个数组里存入阴历每年中的月天数信息,阴历中每月只能是30天或是29天,一年用12或13个二进制位来表示,对应位1为30天,其他为29天,
比如说,它2011年存得是0XB550,这个值到底是怎么算出来的?
...全文
1294
10
打赏
收藏
有谁知道有关日历中的阴历,在BREW是怎么处理的呢?
代码中,往一个数组里存入阴历每年中的月天数信息,阴历中每月只能是30天或是29天,一年用12或13个二进制位来表示,对应位1为30天,其他为29天, 比如说,它2011年存得是0XB550,这个值到底是怎么算出来的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yygll123
2011-08-26
打赏
举报
回复
比如0x0b5a0,是个20位的二进制数,0-3表示当年有无闰年,有的话,为闰月的月份,没有的话,为0
4-15:为除了闰月外的正常月份是大月还是小月,1为30天,0为29天。
注意:从1月到12月对应的是第15位到第4位。一位一个月。
16-19: 表示闰月是大月还是小月,仅当存在闰月的情况下有意义。
1982年的数据是:0x0a974
0000 1010 1010 0111 0100
表示1982年的4月为闰月,即有第二个4月,且是闰小月。
从1月到13月的天数依次为:30、29、30、29、29(闰月)、30、29、30、29、29、30、30、30。
strayedbird
2011-04-21
打赏
举报
回复
好像一个字节包含了两个年份闰月信息,在节约内存方面做到极致了
strayedbird
2011-04-20
打赏
举报
回复
我认为是使用前13bit,每个比特代表一个月,最后三位为0,所以最后一个数字只能是8或0,这样gLunarMonthDaytemp的信息量实际比之前的信息少了润月润到第几个月。
万里独行
2011-04-20
打赏
举报
回复
有道理啊
他后面加了个数组应该就是存闰月的吧
uint8 gLunarMonthtemp[]=
{
0x08, //1900
0X00, 0X50, 0X04, 0X00, 0X20, //1910
0X60, 0X05, 0X00, 0X20, 0X70, //1920
0X05, 0X00, 0X40, 0X02, 0X06, //1930
0X00, 0X50, 0X03, 0X07, 0X00, //1940
0X60, 0X04, 0X00, 0X20, 0X70, //1950
0X05, 0X00, 0X30, 0X80, 0X06, //1960
0X00, 0X40, 0X03, 0X07, 0X00, //1970
0X50, 0X04, 0X08, 0X00, 0X60, //1980
0X04, 0X0a, 0X00, 0X60, 0X05, //1990
0X00, 0X30, 0X80, 0X05, 0X00, //2000
0X40, 0X02, 0X07, 0X00, 0X50, //2010
0X04, 0X09, 0X00, 0X60, 0X04, //2020
0X00, 0X20, 0X60, 0X05, 0X00, //2030
0X30, 0Xb0, 0X06, 0X00, 0X50, //2040
0X02, 0X07, 0X00, 0X50, 0X03, //2050
0x08, //2052
};
万里独行
2011-04-19
打赏
举报
回复
那为什么高通的代码里都是4位十六进制呢?比如2011为0XB4A0。。。。
而且最后4位不是8就是0,根本没其他数字,这是什么意思呢?
还是代表闰月月份吗?
万里独行
2011-04-19
打赏
举报
回复
他代码里是这么写的:
uint32 gLunarMonthDaytemp[]=
{
0X4b68, //1900
0X4ae0, 0Xa570, 0X5268, 0Xd260, 0Xd950, 0X6aa8, 0X56a0, 0X9ad0, 0X4ae8, 0X4ae0, //1910
0Xa4d8, 0Xa4d0, 0Xd250, 0Xd548, 0Xb550, 0X56a0, 0X96d0, 0X95b0, 0X49b8, 0X49b0, //1920
0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada8, 0X2b60, 0X9570, 0X4978, 0X4970, 0X64b0, //1930
0Xd4a0, 0Xea50, 0X6d48, 0X5ad0, 0X2b60, 0X9370, 0X92e0, 0Xc968, 0Xc950, 0Xd4a0, //1940
0Xda50, 0Xb550, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, 0Xb4a8, 0X6ca0, //1950
0Xb550, 0X55a8, 0X4da0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa950, 0Xe950, 0X6aa0, 0Xad50, //1960
0Xab50, 0X4b60, 0Xa570, 0Xa570, 0X5260, 0Xe930, 0Xd950, 0X5aa8, 0X56a0, 0X96d0, //1970
0X4ae8, 0X4ad0, 0Xa4d0, 0Xd268, 0Xd250, 0Xd528, 0Xb540, 0Xb6a0, 0X96d0, 0X95b0, //1980
0X49b0, 0Xa4b8, 0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada0, 0Xab60, 0X9370, 0X4978, //1990
0X4970, 0X64b0, 0X6a50, 0Xea50, 0X6b28, 0X5ac0, 0Xab60, 0X9368, 0X92e0, 0Xc960, //2000
0Xd4a8, 0Xd4a0, 0Xda50, 0X5aa8, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, //2010
0Xb4a0, 0Xb550, 0Xad50, 0X55a8, 0X4ba0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa930, 0X74a8, //2020
0X6aa0, 0Xad50, 0X4da8, 0X4b60, 0X9570, 0Xa4e0, 0Xd260, 0Xe930, 0Xd530, 0X5aa0, //2030
0X6b50, 0X96d0, 0X4ae8, 0X4ad0, 0Xa4d0, 0Xd258, 0Xd250, 0Xd520, 0Xdaa0, 0Xb5a0, //2040
0X56d0, 0X4ad8, 0X49b0, 0Xa4b8, 0Xa4b0, 0Xaa50, 0Xb528, 0X6d20, 0Xada0, 0X55b0, //2050
0X9370, //2051
};
strayedbird
2011-04-19
打赏
举报
回复
上面数据都是5位16进制数字啊,最后一位大多是0,其它数字也都有啊?
strayedbird
2011-04-18
打赏
举报
回复
阳历,有很强的规律性。每年12个月,1、3、5、7、8、10、12月都为31天;
2月份平年28天,能被4除尽的年份里为29天,但1900年为28天;其余月份为31天。
阴历,却没有这些规律可循。阴历分大小月,大月30天,小月29天,但一年中哪个月为大月,哪个月为小月,却是不定的
阴历每十年有4个润年,但哪一年为润年也是不定的。而润月中,哪个润月为大月,哪个为小月也是不定的
因此,推算阴历就没有一个统一的算法
下面是经过整理的150年内的阴历数据,面共15行,每行10个数据,每个数据代表一年,从阳历1900.1.31日起,
为第一个数据年的开始,即阳历1900.1.31=阴历 0.1.1
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0
阴历是要靠天文观测的,因此上面这些不确定的数据,是可以从天文台得到的
要推算阴历,就要根据这些数据来推,150个数据可推150年的阴历,因此目前最大只能推算到2049年,以后的推导,还需要从天文台得到新的数据后才能推导,否则将出现误差
理解数据:
0x04bd8,代表阳历1900.1.31为始的阴历0年,是5个16进制数,共20bit
1.前4位,即0在这一年是润年时才有意义,它代表这年润月的大小月,为1则润大月,为0则润小月。
2.中间12位,即4bd,每位代表一个月,为1则为大月,为0则为小月
3.最后4位,即8,代表这一年的润月月份,为0则不润,首4位要与末4位搭配使用
由此可以看出,阴历的规律性是很差的,要推算阴历,必需基于查表的算法,具体的数据结构安排,可以灵活安排
万里独行
2011-04-18
打赏
举报
回复
[yearCode = [
0x04bd8, # 1900
0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, # 1905
0x16554, 0x056a0, 0x09ad0, 0x055d2, 0x04ae0, # 1910
0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, # 1915
0x0d6a0, 0x0ada2, 0x095b0, 0x14977, 0x04970, # 1920
0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, # 1925
0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566, # 1930
0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, # 1935
0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, # 1940
0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, # 1945
0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, # 1950
0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, # 1955
0x052d0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, # 1960
0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, # 1965
0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, # 1970
0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, # 1975
0x0d558, 0x0b540, 0x0b5a0, 0x195a6, 0x095b0, # 1980
0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, # 1985
0x06d40, 0x0af46, 0x0ab60, 0x09570, 0x04af5, # 1990
0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, # 1995
0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960, # 2000
0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, # 2005
0x0abb7, 0x025d0, 0x092d0, 0x0cab5, 0x0a950, # 2010
0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, # 2015
0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, # 2020
0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, # 2025
0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, 0x05aa0, # 2030
0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, # 2035
0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, # 2040
0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, # 2045
0x0aa50, 0x1b255, 0x06d20, 0x0ada0 # 2049
]
]
就好比上面是这个数组,它说是计算阳历转阴历所需的数据,这些数据是怎么来的呢??
万里独行
2011-04-18
打赏
举报
回复
没有人回答啊。。。
brew
入门手机
日历
brew
入门学习的好程序。学习
日历
编程对于认识
brew
,深入
brew
开发是一个很好的帮助。
BREW
日历
(
BREW
初学者适用)
BREW
日历
,是本人在学习
BREW
过程
中
写出来的一个
日历
小程序,希望对你有帮助
用
brew
写的
日历
代码
瞎写的些
日历
代码,,希望各位看看,刚学
brew
不久,,希望各位大侠能多多指正。
Home
brew
软件管理工具
Home
brew
软件管理工具
amazon-connect-holiday-lambda:AWS Lambda在Amazon Connect
中
创建假期
日历
功能
Amazon Connect Holiday Lambda函数 AWS Lambda在Amazon Connect
中
创建假期
日历
功能。 安装 使用Home
brew
的AWS SAM CLI。 $
brew
tap aws/tap $
brew
install aws-sam-cli 验证安装。 $ sam --version SAM CLI, version 1.21.1 参考: : 裁判
Qualcomm 开发者论坛
1,354
社区成员
5,564
社区内容
发帖
与我相关
我的任务
Qualcomm 开发者论坛
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
复制链接
扫一扫
分享
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能
物联网
机器学习
技术论坛(原bbs)
北京·东城区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章