2013-12-25 4 views
-3

я хочу хранить даты в 16 бит так, как:Сохранение даты в 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. 
+1

Вы должны попробовать что-то, то задать конкретный вопрос, если и когда вы столкнетесь с проблемами. – juanchopanza

+0

@juanchopanza Я отредактировал этот вопрос. – Danieboy

ответ

10

Encode:

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

Decode:

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

@yzt: Спасибо за исправление года0, но мне нравится оставлять свои ответы до самых простых вещей. –

+0

Абсолютно. Это ваш ответ, с вашим именем на нем. Я просто подумал, что это поможет OP больше, видя его/ее явный уровень навыков программирования. – yzt

Смежные вопросы