1. 程式人生 > >C# BCD碼與十進位制數的轉換

C# BCD碼與十進位制數的轉換

BCD碼(Binary-Coded Decimal‎)是二進位制編碼的十進位制數的縮寫,BCD碼用4位二進位制數表示一位十進位制數。BCD碼各位的數值範圍為2#0000~2#1001,對應於十進位制數0~9。BCD碼不能使用十六進位制的A~F(2#1010~2#1111)這6個數字。BCD碼本質上是十進位制數,因此相鄰兩位逢十進一。

   BCD碼的最高位二進位制數是符號位,負數的符號位為1,正數為0。16位BCD碼的範圍為–999~+999。

程式碼

        private static byte ConvertBCD(byte b)//byte轉換為BCD碼
        {
            //高四位  
            byte b1 = (byte)(b / 10);
            //低四位  
            byte b2 = (byte)(b % 10);
            return (byte)((b1 << 4) | b2);
        }

        /// <summary>  
        /// 將BCD一位元組資料轉換到byte 十進位制資料  
        /// </summary>  
        /// <param name="b" />位元組數  
        /// <returns>返回轉換後的BCD碼</returns>  
        public static byte ConvertBCDToInt(byte b)
        {
            //高四位  
            byte b1 = (byte)((b >> 4) & 0xF);
            //低四位  
            byte b2 = (byte)(b & 0xF);

            return (byte)(b1 * 10 + b2);
        }