以16位存储日期[关闭]

问题描述 投票:-2回答:2

我想以16位的方式存储日期,例如:

High Bytes: Y Y Y Y Y Y Y M
Low Bytes:  M M M D D D D D

值在以下范围内

Year:  0 - 99
Month: 1 - 12
Day:   1 to 31

我意识到它会是这样的

byte a = (year << 10) + (month << 6) + day.
c++ date
2个回答
10
投票

编码:

((year - year0) << 9) + (month << 5) + day

解码:

year  = (date >> 9) + year0;
month = (date >> 5) & 15;
day   = date & 31;

1
投票
(year<<9) | (month<<5) | day;
© www.soinside.com 2019 - 2024. All rights reserved.