`
收藏列表
标题 标签 来源
BCD转换 bcd BCD转换
//将BCD码转换成数字字符
        /// <summary>
        /// 将BCD码转换成数字字符
        /// </summary>
        /// <param name="bCode">BCD数组</param>
        /// <returns></returns>
        private string BCD2String(byte[] bCode, int startIndex, int length)
        {
            string result = "";
            for (int i = startIndex; i < startIndex + length; i++)
            {
                result += Convert.ToString(bCode[i], 16).PadLeft(2, '0');
            }            
            result = result.TrimEnd('A').TrimEnd('a');
            return result.TrimEnd('F').TrimEnd('f');
        }

        //将数字字符串转换成BCD编码
        /// <summary>
        /// 将数字字符串转换成BCD编码
        /// </summary>
        /// <param name="str">输入字符串</param>
        /// <returns></returns>
        public byte[] String2BCD(string s, int length)
        {
            if (length < 0) return null;

            if (string.IsNullOrEmpty(s)) return new byte[0];       

            byte[] data = new byte[length];

            for (int i = 0; i < length; i++)
            {
                if (i * 2 < s.Length)
                {
                    if (i * 2 + 1 < s.Length)
                    {
                        data[i] = (byte)(((s[i * 2] - 48) << 4) + (s[i * 2 + 1] - 48));
                    }
                    else
                    {
                        data[i] = (byte)(((s[i * 2] - 48) << 4) + 0x0A);
                    }
                }
                else
                {
                    data[i] = 0xAA;
                }
            }
            return data;
        }
高低位互换 高低位互换 高低位互换
public static short SwapInt16(short v)
        {
            return (short)(((v & 0xff) << 8) | ((v >> 8) & 0xff));
        }
        public static ushort SwapUInt16(ushort v)
        {
            return (ushort)(((v & 0xff) << 8) | ((v >> 8) & 0xff));
        }
        public static int SwapInt32(int v)
        {
            return (int)(((SwapInt16((short)v) & 0xffff) << 0x10) |
                          (SwapInt16((short)(v >> 0x10)) & 0xffff));
        }
        public static uint SwapUInt32(uint v)
        {
            return (uint)(((SwapUInt16((ushort)v) & 0xffff) << 0x10) |
                           (SwapUInt16((ushort)(v >> 0x10)) & 0xffff));
        }
        public static long SwapInt64(long v)
        {
            return (long)(((SwapInt32((int)v) & 0xffffffffL) << 0x20) |
                           (SwapInt32((int)(v >> 0x20)) & 0xffffffffL));
        }
        public static ulong SwapUInt64(ulong v)
        {
            return (ulong)(((SwapUInt32((uint)v) & 0xffffffffL) << 0x20) |
                            (SwapUInt32((uint)(v >> 0x20)) & 0xffffffffL));
        }
Global site tag (gtag.js) - Google Analytics