Вот ужасная версия грубой силы. Я уверен, что есть лучший способ, чем этот, но он все равно должен работать.
int digitOne = year / 1000;
int digitTwo = (year - digitOne * 1000) / 100;
int digitThree = (year - digitOne * 1000 - digitTwo * 100) / 10;
int digitFour = year - digitOne * 1000 - digitTwo * 100 - digitThree * 10;
byte[] bcdYear = new byte[] { digitOne << 4 | digitTwo, digitThree << 4 | digitFour };
Самое печальное в том, что быстрые преобразования двоичных данных в BCD встроены в архитектуру микропроцессора x86, если вы можете их использовать!