c# - 将 int 转换为 BCD 字节数组

标签 c# .net encryption bcd

我想使用 BCD 将 int 转换为 byte[2] 数组。

有问题的 int 将来自代表年份的 DateTime 并且必须转换为两个字节。

是否有任何预制函数可以执行此操作,或者您能给我一个执行此操作的简单方法吗?

示例:

int year = 2010

会输出:

byte[2]{0x20, 0x10};

最佳答案

    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) };
    }

请注意,您要求的是大端结果,这有点不寻常。

关于c# - 将 int 转换为 BCD 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107026/

相关文章:

c# - 在C#中使用LINQ时如何保持类型?

c# - 如何从 aspx.cs 页面切换确认消息框

ssl - TLS 1.2 change-cipher-spec 的 "decrypt error",但正确读取 MAC

android - iOS 和 Java 中的 AES 加密

c# - 在 C# 中加密解密 AES CBC 256

java - MD5 在 C# 和 Java 之间生成不同的结果

Where子句的C#代码混淆

c# - 转到 VS 2010 中的定义

c# - WCF 访问被拒绝异常

c# - 将只有几列的数据复制到另一个数据表中