首页 > 代码库 > ConvertHelper类

ConvertHelper类

/// <summary>    /// 处理数据类型转换,数制转换、编码转换相关的类    /// </summary>    public sealed class ConvertHelper    {        #region 类型转换        /// <summary>        /// 取得Int值,如果为Null 则返回0        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static int ToInt(object obj)        {            if (obj != null)            {                int i;                int.TryParse(obj.ToString(), out i);                return i;            }            else                return 0;        }        public static float ToFloat(object obj)        {            float i;            float.TryParse(obj.ToString(), out i);            return i;        }        /// <summary>        /// 取得Int值,如果不成功则返回指定exceptionvalue值        /// </summary>        /// <param name="obj">要计算的值</param>        /// <param name="exceptionvalue">异常时的返回值</param>        /// <returns></returns>        public static int ToInt(object obj, int exceptionvalue)        {            if (obj == null)                return exceptionvalue;            if (string.IsNullOrEmpty(obj.ToString()))                return exceptionvalue;            int i = exceptionvalue;            try { i = Convert.ToInt32(obj); }            catch { i = exceptionvalue; }            return i;        }        /// <summary>        /// 取得byte值        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static byte ToByte(object obj)        {            if (obj.ToString() != "")                return byte.Parse(obj.ToString());            else                return 0;        }        /// <summary>        /// 获得Long值        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static long ToLong(object obj)        {            if (obj.ToString() != "")                return long.Parse(obj.ToString());            else                return 0;        }        /// <summary>        /// 取得Long值,如果不成功则返回指定exceptionvalue值        /// </summary>        /// <param name="obj">要计算的值</param>        /// <param name="exceptionvalue">异常时的返回值</param>        /// <returns></returns>        public static long ToLong(object obj, long exceptionvalue)        {            if (obj == null)            {                return exceptionvalue;            }            if (string.IsNullOrEmpty(obj.ToString()))            {                return exceptionvalue;            }            long i = exceptionvalue;            try            {                i = Convert.ToInt64(obj);            }            catch            {                i = exceptionvalue;            }            return i;        }        /// <summary>        /// 取得Decimal值        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static decimal ToDecimal(object obj)        {            if (obj.ToString() != "")                return decimal.Parse(obj.ToString());            else                return 0;        }        /// <summary>        /// 取得DateTime值        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static DateTime ToDateTime(object obj)        {            if (obj.ToString() != "")                return DateTime.Parse(obj.ToString());            else                return DateTime.Now;            //return DateTime.MinValue;        }        /// <summary>        /// 格式化日期 yyyy-MM-dd HH:mm        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static string FormatDateTime(object obj, string Format)        {            if (obj.ToString() != "")                return DateTime.Parse(obj.ToString()).ToString(Format);            else                return "";        }        /// <summary>        /// 取得bool值        /// </summary>        /// <param name="obj"></param>        /// <returns></returns>        public static bool ToBool(object obj)        {            if (obj != null)            {                bool flag;                bool.TryParse(obj.ToString(), out flag);                return flag;            }            else                return false;        }        #endregion        #region 各进制数间转换        /// <summary>        /// 实现各进制数间的转换。ConvertBase("15",10,16)表示将十进制数15转换为16进制的数。        /// </summary>        /// <param name="value">要转换的值,即原值</param>        /// <param name="from">原值的进制,只能是2,8,10,16四个值。</param>        /// <param name="to">要转换到的目标进制,只能是2,8,10,16四个值。</param>        public static string ConvertBase(string value, int from, int to)        {            if (!IsBaseNumber(from))                throw new ArgumentException("参数from只能是2,8,10,16四个值。");            if (!IsBaseNumber(to))                throw new ArgumentException("参数to只能是2,8,10,16四个值。");            int intValue = http://www.mamicode.com/Convert.ToInt32(value, from);  //先转成10进制            string result = Convert.ToString(intValue, to);  //再转成目标进制            if (to == 2)            {                int resultLength = result.Length;  //获取二进制的长度                switch (resultLength)                {                    case 7:                        result = "0" + result;                        break;                    case 6:                        result = "00" + result;                        break;                    case 5:                        result = "000" + result;                        break;                    case 4:                        result = "0000" + result;                        break;                    case 3:                        result = "00000" + result;                        break;                }            }            return result;        }        /// <summary>        /// 判断是否是  2 8 10 16        /// </summary>        /// <param name="baseNumber"></param>        /// <returns></returns>        private static bool IsBaseNumber(int baseNumber)        {            if (baseNumber == 2 || baseNumber == 8 || baseNumber == 10 || baseNumber == 16)                return true;            return false;        }        #endregion        #region 使用指定字符集将string转换成byte[]        /// <summary>        /// 将string转换成byte[]        /// </summary>        /// <param name="text">要转换的字符串</param>        public static byte[] StringToBytes(string text)        {            return Encoding.Default.GetBytes(text);        }        /// <summary>        /// 使用指定字符集将string转换成byte[]        /// </summary>        /// <param name="text">要转换的字符串</param>        /// <param name="encoding">字符编码</param>        public static byte[] StringToBytes(string text, Encoding encoding)        {            return encoding.GetBytes(text);        }        #endregion        #region 使用指定字符集将byte[]转换成string        /// <summary>        /// 将byte[]转换成string        /// </summary>        /// <param name="bytes">要转换的字节数组</param>        public static string BytesToString(byte[] bytes)        {            return Encoding.Default.GetString(bytes);        }        /// <summary>        /// 使用指定字符集将byte[]转换成string        /// </summary>        /// <param name="bytes">要转换的字节数组</param>        /// <param name="encoding">字符编码</param>        public static string BytesToString(byte[] bytes, Encoding encoding)        {            return encoding.GetString(bytes);        }        #endregion        #region 将byte[]转换成int        /// <summary>        /// 将byte[]转换成int        /// </summary>        /// <param name="data">需要转换成整数的byte数组</param>        public static int BytesToInt32(byte[] data)        {            //如果传入的字节数组长度小于4,则返回0            if (data.Length < 4)            {                return 0;            }            //定义要返回的整数            int num = 0;            //如果传入的字节数组长度大于4,需要进行处理            if (data.Length >= 4)            {                //创建一个临时缓冲区                byte[] tempBuffer = new byte[4];                //将传入的字节数组的前4个字节复制到临时缓冲区                Buffer.BlockCopy(data, 0, tempBuffer, 0, 4);                //将临时缓冲区的值转换成整数,并赋给num                num = BitConverter.ToInt32(tempBuffer, 0);            }            //返回整数            return num;        }        #endregion        #region 将数据转换为整型        /// <summary>        /// 将数据转换为整型   转换失败返回默认值        /// </summary>        /// <typeparam name="T">数据类型</typeparam>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static int ToInt32<T>(T data, int defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToInt32(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为整型   转换失败返回默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static int ToInt32(string data, int defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            int temp = 0;            if (Int32.TryParse(data, out temp))            {                return temp;            }            else            {                return defValue;            }        }        /// <summary>        /// 将数据转换为整型  转换失败返回默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static int ToInt32(object data, int defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToInt32(data);            }            catch            {                return defValue;            }        }        #endregion        #region 将数据转换为布尔型        /// <summary>        /// 将数据转换为布尔类型  转换失败返回默认值        /// </summary>        /// <typeparam name="T">数据类型</typeparam>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static bool ToBoolean<T>(T data, bool defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToBoolean(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为布尔类型  转换失败返回 默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static bool ToBoolean(string data, bool defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            bool temp = false;            if (bool.TryParse(data, out temp))            {                return temp;            }            else            {                return defValue;            }        }        /// <summary>        /// 将数据转换为布尔类型  转换失败返回 默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static bool ToBoolean(object data, bool defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToBoolean(data);            }            catch            {                return defValue;            }        }        #endregion        #region 将数据转换为单精度浮点型        /// <summary>        /// 将数据转换为单精度浮点型  转换失败 返回默认值        /// </summary>        /// <typeparam name="T">数据类型</typeparam>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static float ToFloat<T>(T data, float defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToSingle(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为单精度浮点型   转换失败返回默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static float ToFloat(object data, float defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToSingle(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为单精度浮点型   转换失败返回默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static float ToFloat(string data, float defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            float temp = 0;            if (float.TryParse(data, out temp))            {                return temp;            }            else            {                return defValue;            }        }        #endregion        #region 将数据转换为双精度浮点型        /// <summary>        /// 将数据转换为双精度浮点型   转换失败返回默认值        /// </summary>        /// <typeparam name="T">数据的类型</typeparam>        /// <param name="data">要转换的数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static double ToDouble<T>(T data, double defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToDouble(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为双精度浮点型,并设置小数位   转换失败返回默认值        /// </summary>        /// <typeparam name="T">数据的类型</typeparam>        /// <param name="data">要转换的数据</param>        /// <param name="decimals">小数的位数</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static double ToDouble<T>(T data, int decimals, double defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Math.Round(Convert.ToDouble(data), decimals);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为双精度浮点型  转换失败返回默认值        /// </summary>        /// <param name="data">要转换的数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static double ToDouble(object data, double defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToDouble(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为双精度浮点型  转换失败返回默认值        /// </summary>        /// <param name="data">要转换的数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static double ToDouble(string data, double defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            double temp = 0;            if (double.TryParse(data, out temp))            {                return temp;            }            else            {                return defValue;            }        }        /// <summary>        /// 将数据转换为双精度浮点型,并设置小数位  转换失败返回默认值        /// </summary>        /// <param name="data">要转换的数据</param>        /// <param name="decimals">小数的位数</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static double ToDouble(object data, int decimals, double defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Math.Round(Convert.ToDouble(data), decimals);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为双精度浮点型,并设置小数位  转换失败返回默认值        /// </summary>        /// <param name="data">要转换的数据</param>        /// <param name="decimals">小数的位数</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static double ToDouble(string data, int decimals, double defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            double temp = 0;            if (double.TryParse(data, out temp))            {                return Math.Round(temp, decimals);            }            else            {                return defValue;            }        }        #endregion        #region 将数据转换为指定类型        /// <summary>        /// 将数据转换为指定类型        /// </summary>        /// <param name="data">转换的数据</param>        /// <param name="targetType">转换的目标类型</param>        public static object ConvertTo(object data, Type targetType)        {            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return null;            }            Type type2 = data.GetType();            if (targetType == type2)            {                return data;            }            if (((targetType == typeof(Guid)) || (targetType == typeof(Guid?))) && (type2 == typeof(string)))            {                if (string.IsNullOrEmpty(data.ToString()))                {                    return null;                }                return new Guid(data.ToString());            }            if (targetType.IsEnum)            {                try                {                    return Enum.Parse(targetType, data.ToString(), true);                }                catch                {                    return Enum.ToObject(targetType, data);                }            }            if (targetType.IsGenericType)            {                targetType = targetType.GetGenericArguments()[0];            }            return Convert.ChangeType(data, targetType);        }        /// <summary>        /// 将数据转换为指定类型        /// </summary>        /// <typeparam name="T">转换的目标类型</typeparam>        /// <param name="data">转换的数据</param>        public static T ConvertTo<T>(object data)        {            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))                return default(T);            object obj = ConvertTo(data, typeof(T));            if (obj == null)            {                return default(T);            }            return (T)obj;        }        #endregion        #region 将数据转换Decimal        /// <summary>        /// 将数据转换为Decimal  转换失败返回默认值        /// </summary>        /// <typeparam name="T">数据类型</typeparam>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static Decimal ToDecimal<T>(T data, Decimal defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToDecimal(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为Decimal  转换失败返回 默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static Decimal ToDecimal(object data, Decimal defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToDecimal(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为Decimal  转换失败返回 默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static Decimal ToDecimal(string data, Decimal defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            decimal temp = 0;            if (decimal.TryParse(data, out temp))            {                return temp;            }            else            {                return defValue;            }        }        #endregion        #region 将数据转换为DateTime        /// <summary>        /// 将数据转换为DateTime  转换失败返回默认值        /// </summary>        /// <typeparam name="T">数据类型</typeparam>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static DateTime ToDateTime<T>(T data, DateTime defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToDateTime(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为DateTime  转换失败返回 默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static DateTime ToDateTime(object data, DateTime defValue)        {            //如果为空则返回默认值            if (data =http://www.mamicode.com/= null || Convert.IsDBNull(data))            {                return defValue;            }            try            {                return Convert.ToDateTime(data);            }            catch            {                return defValue;            }        }        /// <summary>        /// 将数据转换为DateTime  转换失败返回 默认值        /// </summary>        /// <param name="data">数据</param>        /// <param name="defValue">默认值</param>        /// <returns></returns>        public static DateTime ToDateTime(string data, DateTime defValue)        {            //如果为空则返回默认值            if (string.IsNullOrEmpty(data))            {                return defValue;            }            DateTime temp = DateTime.Now;            if (DateTime.TryParse(data, out temp))            {                return temp;            }            else            {                return defValue;            }        }        #endregion        #region 半角全角转换        /// <summary>        /// 转全角的函数(SBC case)        /// </summary>        /// <param name="input">任意字符串</param>        /// <returns>全角字符串</returns>        ///<remarks>        ///全角空格为12288,半角空格为32        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248        ///</remarks>        public static string ConvertToSBC(string input)        {            //半角转全角:            char[] c = input.ToCharArray();            for (int i = 0; i < c.Length; i++)            {                if (c[i] == 32)                {                    c[i] = (char)12288;                    continue;                }                if (c[i] < 127)                {                    c[i] = (char)(c[i] + 65248);                }            }            return new string(c);        }        /// <summary> 转半角的函数(DBC case) </summary>        /// <param name="input">任意字符串</param>        /// <returns>半角字符串</returns>        ///<remarks>        ///全角空格为12288,半角空格为32        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248        ///</remarks>        public static string ConvertToDBC(string input)        {            char[] c = input.ToCharArray();            for (int i = 0; i < c.Length; i++)            {                if (c[i] == 12288)                {                    c[i] = (char)32;                    continue;                }                if (c[i] > 65280 && c[i] < 65375)                    c[i] = (char)(c[i] - 65248);            }            return new string(c);        }        #endregion    }

 

ConvertHelper类