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 ;
} 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 ;
} /// <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 ;
} /// <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 ;
} /// <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 = Convert.ToInt32(value, from); //先转成10进制
string result = Convert.ToString(intValue, to); //再转成目标进制
if (to == )
{
int resultLength = result.Length; //获取二进制的长度
switch (resultLength)
{
case :
result = "" + result;
break;
case :
result = "" + result;
break;
case :
result = "" + result;
break;
case :
result = "" + result;
break;
case :
result = "" + result;
break;
}
}
return result;
} /// <summary>
/// 判断是否是 2 8 10 16
/// </summary>
/// <param name="baseNumber"></param>
/// <returns></returns>
private static bool IsBaseNumber(int baseNumber)
{
if (baseNumber == || baseNumber == || baseNumber == || baseNumber == )
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 < )
{
return ;
} //定义要返回的整数
int num = ; //如果传入的字节数组长度大于4,需要进行处理
if (data.Length >= )
{
//创建一个临时缓冲区
byte[] tempBuffer = new byte[]; //将传入的字节数组的前4个字节复制到临时缓冲区
Buffer.BlockCopy(data, , tempBuffer, , ); //将临时缓冲区的值转换成整数,并赋给num
num = BitConverter.ToInt32(tempBuffer, );
} //返回整数
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 == 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 = ;
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 == 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 == 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 == 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 == 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 == 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 = ; 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 == 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 == 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 == 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 = ; 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 == 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 = ; 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 == 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()[];
} return Convert.ChangeType(data, targetType);
} /// <summary>
/// 将数据转换为指定类型
/// </summary>
/// <typeparam name="T">转换的目标类型</typeparam>
/// <param name="data">转换的数据</param>
public static T ConvertTo<T>(object data)
{
if (data == 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 == 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 == 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 = ; 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 == 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 == 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 = ; i < c.Length; i++)
{
if (c[i] == )
{
c[i] = (char);
continue;
}
if (c[i] < )
{
c[i] = (char)(c[i] + );
}
}
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 = ; i < c.Length; i++)
{
if (c[i] == )
{
c[i] = (char);
continue;
}
if (c[i] > && c[i] < )
c[i] = (char)(c[i] - );
}
return new string(c);
}
#endregion
}
ConvertHelper类的更多相关文章
- ConvertHelper与泛型集合
在机房重构时.我们常常会用到ConvertHelper. 它把从数据库中查询到的dateTable(也是一个暂时表)转化为泛型,然后再填充到DataGridView控件中. ConvertHelper ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- ConvertHelper 通用类
public class ConvertHelper<T> where T : new() { private static Dictionary<Type, List<IPr ...
- .net工具类
ConvertHelper public class ConvertHelper { /// <summary> /// 转换类型 /// </summary> /// < ...
- Util应用程序框架公共操作类(二):数据类型转换公共操作类(源码篇)
上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码.本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载. 我们在 应用程序框架实战十一:创建VS解决 ...
- Cache Helper类
using System; using System.Collections.Generic; using System.Web; using System.Collections; using Sy ...
- [网络] C# NetHelper网络通信编程类教程与源码下载
点击下载 NetHelper.zip 主要功能如下所示 检查设置的IP地址是否正确,返回正确的IP地址 检查设置的端口号是否正确,返回正确的端口号 将字符串形式的IP地址转换成IPAddress对象 ...
- asp.net文件操作类
/** 文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; usin ...
- C# 网络常用操作类NetHelper.cs
一个非常完整的网络操作帮助类,包含20多个常用方法,例如: IP地址的验证以及截取. 端口的验证. 电子邮件的发送. 获取计算机名. IP地址的获取以及TCP. UDP连接的创建和数据发送等. usi ...
随机推荐
- 经典算法和OJ网站(开发者必备-转)
一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++.Pascal)源代码,系统对源代码进行编译和执行,并通过 ...
- Oracle On 、Where、Having 区别
ON .WHERE.HAVING都能通过限制条件筛选数据,但他们的使用及其不同.下面我们来分析三者之间的区别. 1. ON 和WHERE 所有的查询都回产生一个中间临时报表,查询结果就是从返回临时报表 ...
- 单片机C语言探究--为什么变量最好要赋初值
有许多书上说,变量最好要赋初值.但是为什么要初值呢?不赋初值可能会出现什么样的意外呢?以下就我在以51单片机为MCU,Keil为编译器看到的实现现象作分析.众所周知,变量是存储在RAM中,掉电后即丢失 ...
- location.href 实现点击下载功能
如果页面上要实现一个点击下载的功能,传统做法是使用一个 a 标签,然后将该标签的 href 属性地址指向下载文件在服务端的地址(相对地址或者绝对地址),比如这样: 能这样实现是因为,在浏览器地址栏输入 ...
- JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法)
引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极.说不定若干年以后,还会有新的终极算法,而且几乎是一定会有,因为LZ相信高人们的能力. 那么分代搜集算法是怎么处理GC的呢? 对象分 ...
- STM32 C语言,端口映射
static XX 有记忆的定义 typedef XX 可以多次定义一个 #ifedf XXX XXX(程序段1) #else XXX(程序段2)
- Congruence relation 同余关系
https://en.wikipedia.org/wiki/Congruence_relation https://zh.wikipedia.org/wiki/%E5%90%8C%E9%A4%98%E ...
- 聚类算法kmeans
1. 聚类问题 所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高. 2. ...
- 第一章:java语言概述与开发环境
前言: 1.程序是什么? 程序是对现实世界的数字化模拟! 2.编程语言是工具,程序的作用就是解决问题! 重要的思路! 该知识点能解决什么问题? 1.语言特性:单继承.多接口! 纯面向 ...
- less 学习 (计划终于执行了啊,不再拖延了)
1.less是什么? 答:将CSS赋予动态语言的特性, 变量,继承,运算,函数. (less就是一个用js实现的CSS解析器,运行要依赖js引擎). 2.运行原理: 按照指定语法规则写好less文 ...