/////////////////////////////////////////////////////////////////
//
// (C) Copyright 2009, Kenneth, Inc.
// All rights reserved. Confidential. Except as pursuant
// to a written agreement with Kenneth, this software may
// not be used or distributed. This software may be covered
// by one or more patents.
//
// 本软件为Kenneth开发,版权所有,违者必究,320325198102218110
//
/////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.ComponentModel;
using System.Data.SqlClient;
using System.Data;
namespace GummingCommon
{
public class TypeHelper
{
///
///
///
///
///
public static string ConvertFromBase64String(string str)
{
return Encoding.Default.GetString(Convert.FromBase64String(str));
}
///
///
///
///
///
public static string ConvertToBase64String(string str)
{
try
{
return Convert.ToBase64String(Encoding.Default.GetBytes(str));
}
catch
{
return "";
}
}
public static string ConvertFromBase64UTF8(string str)
{
try
{
return Encoding.UTF8.GetString(Convert.FromBase64String(str));
}
catch
{
return "";
}
}
public static string ConvertToBase64UTF8(string str)
{
try
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
}
catch
{
return "";
}
}
public static String UTF8ByteArrayToString(Byte[] characters)
{
UTF8Encoding encoding = new UTF8Encoding();
String constructedString = encoding.GetString(characters);
return (constructedString);
}
public static Byte[] StringToUTF8ByteArray(String pXmlString)
{
UTF8Encoding encoding = new UTF8Encoding();
Byte[] byteArray = encoding.GetBytes(pXmlString);
return byteArray;
}
///
///
///
///
///
public static string ToString(DateTime dt)
{
return dt.ToString("yyyy-MM-dd HH:mm:ss");
}
public static string ToString(DateTime? dt)
{
return Convert.ToDateTime(dt).ToString("yyyy-MM-dd HH:mm:ss");
}
public static string ToOCIString(DateTime? dt)
{
return Convert.ToDateTime(dt).ToString("yyyyMMdd");
}
public static DateTime ToDateTime(string dtstr)
{
DateTime dt;
DateTime.TryParse(dtstr, out dt);
return dt;
}
///
///
///
///
///
///
public static string[] Split(string splitString, int numbers)
{
string[] values = splitString.Split(',');
List listValues = new List();
listValues.AddRange(values);
while (listValues.Count < numbers)
{
listValues.Add("0");
}
for (int i = 0; i < listValues.Count; i++)
{
if (string.IsNullOrEmpty(listValues[i]))
{
listValues[i] = "0";
}
}
return listValues.ToArray();
}
///
///
///
///
///
public static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
///
///
///
///
///
public static string ByteArrayToHexString(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
return sb.ToString().ToUpper();
}
public static string IntToHex(int value)
{
return value.ToString("X");
}
public static byte[] IntToByteArray(int value)
{
//低位在前,高位在后
byte[] src = new byte[4];
src[3] = (byte)((value >> 24) & 0xFF);
src[2] = (byte)((value >> 16) & 0xFF);
src[1] = (byte)((value >> 8) & 0xFF);
src[0] = (byte)(value & 0xFF);
return src;
/*高位在前,低位在后
byte[] src = new byte[4];
src[0] = (byte) ((value>>24) & 0xFF);
src[1] = (byte) ((value>>16)& 0xFF);
src[2] = (byte) ((value>>8)&0xFF);
src[3] = (byte) (value & 0xFF);
return src;*/
}
public static byte[] ShortToByteArray(int value)
{
//低位在前,高位在后
byte[] src = new byte[2];
src[1] = (byte)((value >> 8) & 0xFF);
src[0] = (byte)(value & 0xFF);
return src;
}
public static int ByteArrayToInt(byte[] bytes)
{
int value;//低位在前,高位在后
value = (int)((bytes[0] & 0xFF)
| ((bytes[1] & 0xFF) << 8)
| ((bytes[2] & 0xFF) << 16)
| ((bytes[3] & 0xFF) << 24));
return value;
/*低位在后,高位在前
int value;
value = (int)(((src[offset] & 0xFF) << 24)
| ((src[offset + 1] & 0xFF) << 16)
| ((src[offset + 2] & 0xFF) << 8)
| (src[offset + 3] & 0xFF));
return value;*/
}
public static int ByteArrayToShort(byte[] bytes)
{
int value;//低位在前,高位在后
value = (int)((bytes[0] & 0xFF)
| ((bytes[1] & 0xFF) << 8));
return value;
/*低位在后,高位在前
int value;
value = (int)(((src[offset] & 0xFF) << 24)
| ((src[offset + 1] & 0xFF) << 16)
| ((src[offset + 2] & 0xFF) << 8)
| (src[offset + 3] & 0xFF));
return value;*/
}
///
/// valide the number type
///
///
///
/*/////
valide the number type//*/
public static bool ValideDecimal(string number)/////*/
{
bool isnumber = false;
string macth = @"^[+-]?\d{0,19}\.\d*$";
isnumber = Regex.IsMatch(number, macth);
macth = @"^[+-]?\d{1,19}$";
isnumber = Regex.IsMatch(number, macth) || isnumber;
return isnumber;
}
///
///
///
///
///
public static bool ValidTypeIsNumber(System.Reflection.PropertyInfo pi)
{
if (pi.PropertyType == typeof(double) || pi.PropertyType == typeof(int) || pi.PropertyType == typeof(decimal))
{
return true;
}
return false;
}
///
/// Convert Media Color (WPF) to Drawing Color (WinForm)
///
///
///
public static System.Drawing.Color ToDrawingColor(System.Windows.Media.Color mediaColor)
{
return System.Drawing.Color.FromArgb(mediaColor.A, mediaColor.R, mediaColor.G, mediaColor.B);
}
///
/// Convert Drawing Color (WPF) to Media Color (WinForm)
///
///
///
public static System.Windows.Media.Color ToMediaColor(System.Drawing.Color drawingColor)
{
return System.Windows.Media.Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B);
}
///
///
///
///
///
///
public static object ConvertAnyType(object value, Type destinationType)
{
object returnValue;
if ((value == null) || destinationType.IsInstanceOfType(value))
{
return value;
}
string str = value as string;
if ((str != null) && (str.Length == 0))
{
return null;
}
TypeConverter converter = TypeDescriptor.GetConverter(destinationType);
bool flag = converter.CanConvertFrom(value.GetType());
if (!flag)
{
converter = TypeDescriptor.GetConverter(value.GetType());
}
if (!flag && !converter.CanConvertTo(destinationType))
{
throw new InvalidOperationException("can to finshed the convert:" + value.ToString() + "==>" + destinationType);
}
try
{
if (destinationType == typeof(bool) && TypeHelper.ValideDecimal((string)value))
{
string newvalue = value as string;
newvalue = newvalue.ToLower();
returnValue = newvalue == "true" || newvalue == "1" ? true : false;
}
else
{
returnValue = flag ? converter.ConvertFrom(null, null, value) : converter.ConvertTo(null, null, value, destinationType);
}
}
catch (Exception e)
{
throw new InvalidOperationException("convert error:" + value.ToString() + "==>" + destinationType, e);
}
return returnValue;
}
public static DbType GetDbType(Type type)
{
String name = type.Name;
DbType val = DbType.String; // default value
try
{
val = (DbType)Enum.Parse(typeof(DbType), name, true);
}
catch (Exception)
{
// add error handling to suit your taste
}
return val;
}
public static SqlDbType GetSqlDbType(Type type)
{
SqlParameter p1 = new SqlParameter();
System.ComponentModel.TypeConverter tc;
tc = System.ComponentModel.TypeDescriptor.GetConverter(p1.DbType);
if (tc.CanConvertFrom(type))
p1.DbType = (DbType)tc.ConvertFrom(type.Name);
else
{
try
{
p1.DbType = (DbType)tc.ConvertFrom(type.Name);
}
catch (Exception ex)
{
}
}
return p1.SqlDbType;
}
public static SqlDbType GetSqlDbType(TypeCode type)
{
SqlDbType p = SqlDbType.VarChar;
switch (type)
{
case TypeCode.String:
p = SqlDbType.VarChar;
break;
case TypeCode.Int32:
p = SqlDbType.Int;
break;
case TypeCode.Int64:
p = SqlDbType.BigInt;
break;
default:
break;
}
return p;
}
}
}