Roa*_*ast 5 .net c# encryption bcd
我想使用BCD将int转换为byte [2]数组.
有问题的int将来自表示Year的DateTime,必须转换为两个字节.
是否有任何预制功能可以做到这一点,或者你能给我一个简单的方法吗?
例:
int year = 2010
Run Code Online (Sandbox Code Playgroud)
输出:
byte[2]{0x20, 0x10};
Run Code Online (Sandbox Code Playgroud)
Han*_*ant 11
static byte[] Year2Bcd(int year) {
if (year < 0 || year > 9999) throw new ArgumentException();
int bcd = 0;
for (int digit = 0; digit < 4; ++digit) {
int nibble = year % 10;
bcd |= nibble << (digit * 4);
year /= 10;
}
return new byte[] { (byte)((bcd >> 8) & 0xff), (byte)(bcd & 0xff) };
}
Run Code Online (Sandbox Code Playgroud)
请注意,您要求获得大端结果,这有点不寻常.