C# 转换函数
2011-05-06 13:01
141 查看
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; //对注册表操作 using System.Collections; //使用Arraylist using System.Security.Cryptography;//加密解密 using System.IO; //文件操作 using System.Runtime.InteropServices;//调用DLL DllImport using System.Management; //获取硬件信息 using System.Net; //获取IP地址是用到 using System.Drawing; //image using System.Net.NetworkInformation; //ping 用到 using System.Text.RegularExpressions; //正则 using System.Data; using System.Data.SqlClient; using Microsoft.VisualBasic; //简体转繁体时用到 using System.Web; //html UrlEncode //注册表操作 public class GF_RegReadWrite { /// <summary> /// 读取路径为keypath,键名为keyname的注册表键值,缺省返回def /// </summary> /// <param name="rootkey"></param> /// <param name="keypath">路径</param> /// <param name="keyname">键名</param> /// <param name="rtn">默认为null</param> /// <returns></returns> static public bool GetRegVal(RegistryKey rootkey, string keypath, string keyname, out string rtn) { rtn = ""; try { RegistryKey key = rootkey.OpenSubKey(keypath); rtn = key.GetValue(keyname).ToString(); key.Close(); return true; } catch { return false; } } /// <summary> /// 设置路径为keypath,键名为keyname的注册表键值为keyval /// </summary> /// <param name="rootkey"></param> /// <param name="keypath"></param> /// <param name="keyname"></param> /// <param name="keyval"></param> /// <returns></returns> static public bool SetRegVal(RegistryKey rootkey, string keypath, string keyname, string keyval) { try { RegistryKey key = rootkey.OpenSubKey(keypath, true); if (key == null) key = rootkey.CreateSubKey(keypath); key.SetValue(keyname, (object)keyval); key.Close(); return true; } catch { return false; } } /// 创建路径为keypath的键 private RegistryKey CreateRegKey(RegistryKey rootkey, string keypath) { try { return rootkey.CreateSubKey(keypath); } catch { return null; } } /// 删除路径为keypath的子项 private bool DelRegSubKey(RegistryKey rootkey, string keypath) { try { rootkey.DeleteSubKey(keypath); return true; } catch { return false; } } /// 删除路径为keypath的子项及其附属子项 private bool DelRegSubKeyTree(RegistryKey rootkey, string keypath) { try { rootkey.DeleteSubKeyTree(keypath); return true; } catch { return false; } } /// 删除路径为keypath下键名为keyname的键值 private bool DelRegKeyVal(RegistryKey rootkey, string keypath, string keyname) { try { RegistryKey key = rootkey.OpenSubKey(keypath, true); key.DeleteValue(keyname); return true; } catch { return false; } } }
//类型转换 public class GF_Convert { /// <summary> /// 字符串 转换 char数组 /// </summary> /// <param name="in_str"></param> /// <param name="in_len"></param> /// <returns></returns> public static char[] string2chararray(string in_str, int in_len) { char[] ch = new char[in_len]; in_str.ToCharArray().CopyTo(ch, 0); return ch; } /// <summary> /// char数组 转换 字符串 /// </summary> /// <param name="in_str"></param> /// <returns></returns> public static string chararray2string(char[] in_str) { string out_str; out_str = new string(in_str); int i = out_str.IndexOf('\0', 0); if (i == -1) i = 16; return out_str.Substring(0, i); } /// <summary> /// byte数组 转换 字符串 /// </summary> /// <param name="in_str"></param> /// <returns></returns> public static string bytearray2string(byte[] in_str) { string out_str; out_str = System.Text.Encoding.Default.GetString(in_str); return out_str.Substring(0, out_str.IndexOf('\0', 0)); } /// <summary> /// 字符串 转换 byte数组 注意转换出来会使原来的bytearray长度变短 /// </summary> /// <param name="in_str"></param> /// <returns></returns> public static byte[] string2bytearray(string in_str) { return System.Text.Encoding.Default.GetBytes(in_str); } /// <summary> /// 字符串 转换 byte数组 长度为传如的长度 /// </summary> /// <param name="in_str">传入字符串</param> /// <param name="iLen">目标字节数组长度</param> /// <returns></returns> public static byte[] string2bytearray(string in_str, int iLen) { byte[] bytes = new byte[iLen]; byte[] bsources=System.Text.Encoding.Default.GetBytes(in_str); Array.Copy(bsources, bytes, bsources.Length); return bytes; } /// <summary> /// 将字符串编码为Base64字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Base64Encode(string str) { byte[] barray; barray = Encoding.Default.GetBytes(str); return Convert.ToBase64String(barray); } /// <summary> /// 将Base64字符串解码为普通字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Base64Decode(string str) { byte[] barray; try { barray = Convert.FromBase64String(str); return Encoding.Default.GetString(barray); } catch { return str; } } /// <summary> /// 图片 转换 byte数组 /// </summary> /// <param name="pic"></param> /// <param name="fmt"></param> /// <returns></returns> public static byte[] image_Image2Byte(Image pic, System.Drawing.Imaging.ImageFormat fmt) { MemoryStream mem = new MemoryStream(); pic.Save(mem, fmt); mem.Flush(); return mem.ToArray(); } /// <summary> /// byte数组 转换 图片 /// </summary> /// <param name="bytes"></param> /// <returns></returns> public static Image image_Byte2Image(byte[] bytes) { MemoryStream mem = new MemoryStream(bytes, true); mem.Read(bytes, 0, bytes.Length); mem.Flush(); Image aa = Image.FromStream(mem); return aa; } /// <summary> /// ip 转换 长整形 /// </summary> /// <param name="strIP"></param> /// <returns></returns> public static long IP2Long(string strIP) { long[] ip = new long[4]; string[] s = strIP.Split('.'); ip[0] = long.Parse(s[0]); ip[1] = long.Parse(s[1]); ip[2] = long.Parse(s[2]); ip[3] = long.Parse(s[3]); return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; } /// <summary> /// 长整形 转换 IP /// </summary> /// <param name="longIP"></param> /// <returns></returns> public static string Long2IP(long longIP) { StringBuilder sb = new StringBuilder(""); sb.Append(longIP >> 24); sb.Append("."); //将高8位置0,然后右移16为 sb.Append((longIP & 0x00FFFFFF) >> 16); sb.Append("."); sb.Append((longIP & 0x0000FFFF) >> 8); sb.Append("."); sb.Append((longIP & 0x000000FF)); return sb.ToString(); } /// <summary> /// 将8位日期型整型数据转换为日期字符串数据 /// </summary> /// <param name="date">整型日期</param> /// <param name="chnType">是否以中文年月日输出</param> /// <returns></returns> public static string FormatDate(int date, bool chnType) { string dateStr = date.ToString(); if (date <= 0 || dateStr.Length != 8) return dateStr; if (chnType) return dateStr.Substring(0, 4) + "年" + dateStr.Substring(4, 2) + "月" + dateStr.Substring(6) + "日"; return dateStr.Substring(0, 4) + "-" + dateStr.Substring(4, 2) + "-" + dateStr.Substring(6); } /// <summary> /// string型转换为bool型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的bool类型结果</returns> public static bool StrToBool(object expression, bool defValue) { if (expression != null) return StrToBool(expression, defValue); return defValue; } /// <summary> /// string型转换为bool型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的bool类型结果</returns> public static bool StrToBool(string expression, bool defValue) { if (expression != null) { if (string.Compare(expression, "true", true) == 0) return true; else if (string.Compare(expression, "false", true) == 0) return false; } return defValue; }
/// <summary> /// 将对象转换为Int32类型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int ObjectToInt(object expression) { return ObjectToInt(expression, 0); } /// <summary> /// 将对象转换为Int32类型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int ObjectToInt(object expression, int defValue) { if (expression != null) return StrToInt(expression.ToString(), defValue); return defValue; } /// <summary> /// 将对象转换为Int32类型,转换失败返回0 /// </summary> /// <param name="str">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static int StrToInt(string str) { return StrToInt(str, 0); } /// <summary> /// 将对象转换为Int32类型 /// </summary> /// <param name="str">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static int StrToInt(string str, int defValue) { if (string.IsNullOrEmpty(str) || str.Trim().Length >= 11 || !Regex.IsMatch(str.Trim(), @"^([-]|[0-9])[0-9]*(\.\w*)?$")) return defValue; int rv; if (Int32.TryParse(str, out rv)) return rv; return Convert.ToInt32(StrToFloat(str, defValue)); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float StrToFloat(object strValue, float defValue) { if ((strValue == null)) return defValue; return StrToFloat(strValue.ToString(), defValue); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float ObjectToFloat(object strValue, float defValue) { if ((strValue == null)) return defValue; return StrToFloat(strValue.ToString(), defValue); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float ObjectToFloat(object strValue) { return ObjectToFloat(strValue.ToString(), 0); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static float StrToFloat(string strValue) { if ((strValue == null)) return 0; return StrToFloat(strValue.ToString(), 0); } /// <summary> /// string型转换为float型 /// </summary> /// <param name="strValue">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static float StrToFloat(string strValue, float defValue) { if ((strValue == null) || (strValue.Length > 10)) return defValue; float intValue = defValue; if (strValue != null) { bool IsFloat = Regex.IsMatch(strValue, @"^([-]|[0-9])[0-9]*(\.\w*)?$"); if (IsFloat) float.TryParse(strValue, out intValue); } return intValue; } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="str">要转换的字符串</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static DateTime StrToDateTime(string str, DateTime defValue) { if (!string.IsNullOrEmpty(str)) { DateTime dateTime; if (DateTime.TryParse(str, out dateTime)) return dateTime; } return defValue; } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="str">要转换的字符串</param> /// <returns>转换后的int类型结果</returns> public static DateTime StrToDateTime(string str) { return StrToDateTime(str, DateTime.Now); } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="obj">要转换的对象</param> /// <returns>转换后的int类型结果</returns> public static DateTime ObjectToDateTime(object obj) { return StrToDateTime(obj.ToString()); } /// <summary> /// 将对象转换为日期时间类型 /// </summary> /// <param name="obj">要转换的对象</param> /// <param name="defValue">缺省值</param> /// <returns>转换后的int类型结果</returns> public static DateTime ObjectToDateTime(object obj, DateTime defValue) { return StrToDateTime(obj.ToString(), defValue); } /// <summary> /// 替换回车换行符为html换行符 /// </summary> public static string StrFormat(string str) { string str2; if (str == null) { str2 = ""; } else { str = str.Replace("\r\n", "<br />"); str = str.Replace("\n", "<br />"); str2 = str; } return str2; } /// <summary> /// 转换为简体中文 /// </summary> public static string ToSChinese(string str) { return Strings.StrConv(str, VbStrConv.SimplifiedChinese, 0); } /// <summary> /// 转换为繁体中文 /// </summary> public static string ToTChinese(string str) { return Strings.StrConv(str, VbStrConv.TraditionalChinese, 0); } /// <summary> /// 清除字符串数组中的重复项 /// </summary> /// <param name="strArray">字符串数组</param> /// <param name="maxElementLength">字符串数组中单个元素的最大长度</param> /// <returns></returns> public static string[] DistinctStringArray(string[] strArray, int maxElementLength) { Hashtable h = new Hashtable(); foreach (string s in strArray) { string k = s; if (maxElementLength > 0 && k.Length > maxElementLength) { k = k.Substring(0, maxElementLength); } h[k.Trim()] = s; } string[] result = new string[h.Count]; h.Keys.CopyTo(result, 0); return result; } /// <summary> /// 清除字符串数组中的重复项 /// </summary> /// <param name="strArray">字符串数组</param> /// <returns></returns> public static string[] DistinctStringArray(string[] strArray) { return DistinctStringArray(strArray, 0); }
//读写INI public class GF_INI { [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); [DllImport("kernel32.dll")] public static extern int Beep(int dwFreq, int dwDuration); //读ini public static void iniFile_SetVal(string in_filename, string Section, string Key, string Value) { WritePrivateProfileString(Section, Key, Value, in_filename); } //写INI public static string iniFile_GetVal(string in_filename, string Section, string Key) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp, 255, in_filename); if (i == 0) return ""; else return temp.ToString(); } }
//硬件信息 public class GF_Hardware { /// <summary> /// cpu序列号 /// </summary> /// <returns></returns> public static string getID_CpuId() { string cpuInfo = "";//cpu序列号 ManagementClass cimobject = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = cimobject.GetInstances(); foreach (ManagementObject mo in moc) { cpuInfo = mo.Properties["ProcessorId"].Value.ToString(); } return cpuInfo; } /// <summary> /// 硬盘ID号 /// </summary> /// <returns></returns> public static string getID_HardDiskId() { string HDid = ""; ManagementClass cimobject = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = cimobject.GetInstances(); foreach (ManagementObject mo in moc) { HDid = (string)mo.Properties["Model"].Value; } return HDid; } /// <summary> /// 获取网卡MacAddress /// </summary> /// <returns></returns> public static string getID_NetCardId() { string NCid = ""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) NCid = mo["MacAddress"].ToString(); mo.Dispose(); } return NCid; } }
//加密解密 public class GF_Encrypt { /// <summary> /// DES加密 /// </summary> /// <param name="pToEncrypt">加密字符串</param> /// <param name="sKey">密钥</param> /// <returns></returns> public static string string_Encrypt(string pToEncrypt, string sKey) { if (pToEncrypt == "") return ""; if (sKey.Length < 8) sKey = sKey + "xuE29xWp"; if (sKey.Length > 8) sKey = sKey.Substring(0, 8); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中 //原来使用的UTF8编码,我改成Unicode编码了,不行 byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt); //建立加密对象的密钥和偏移量 //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 //使得输入密码必须输入英文文本 des.Key = ASCIIEncoding.Default.GetBytes(sKey); des.IV = ASCIIEncoding.Default.GetBytes(sKey); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); //Write the byte array into the crypto stream //(It will end up in the memory stream) cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); //Get the data back from the memory stream, and into a string StringBuilder ret = new StringBuilder(); foreach (byte b in ms.ToArray()) { //Format as hex ret.AppendFormat("{0:X2}", b); } ret.ToString(); return ret.ToString(); } /// <summary> /// DES解密 /// </summary> /// <param name="pToDecrypt">解密字符串</param> /// <param name="sKey">解密密钥</param> /// <param name="outstr">返回值</param> /// <returns></returns> public static bool string_Decrypt(string pToDecrypt, string sKey, out string outstr) { if (pToDecrypt == "") { outstr = ""; return true; }; if (sKey.Length < 8) sKey = sKey + "xuE29xWp"; if (sKey.Length > 8) sKey = sKey.Substring(0, 8); try { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //Put the input string into the byte array byte[] inputByteArray = new byte[pToDecrypt.Length / 2]; for (int x = 0; x < pToDecrypt.Length / 2; x++) { int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)); inputByteArray[x] = (byte)i; } //建立加密对象的密钥和偏移量,此值重要,不能修改 des.Key = ASCIIEncoding.Default.GetBytes(sKey); des.IV = ASCIIEncoding.Default.GetBytes(sKey); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); //Flush the data through the crypto stream into the memory stream cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); //Get the decrypted data back from the memory stream //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象 StringBuilder ret = new StringBuilder(); outstr = System.Text.Encoding.Default.GetString(ms.ToArray()); return true; } catch { outstr = ""; return false; } } /// <summary> /// 加密 /// </summary> public class AES { //默认密钥向量 private static byte[] Keys = { 0x41, 0x72, 0x65, 0x79, 0x6F, 0x75, 0x6D, 0x79, 0x53, 0x6E, 0x6F, 0x77, 0x6D, 0x61, 0x6E, 0x3F }; public static string Encode(string encryptString, string encryptKey) { encryptKey = GF_GET.GetSubString(encryptKey, 32, ""); encryptKey = encryptKey.PadRight(32, ' '); RijndaelManaged rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32)); rijndaelProvider.IV = Keys; ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor(); byte[] inputData = Encoding.UTF8.GetBytes(encryptString); byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length); return Convert.ToBase64String(encryptedData); } public static string Decode(string decryptString, string decryptKey) { try { decryptKey = GF_GET.GetSubString(decryptKey, 32, ""); decryptKey = decryptKey.PadRight(32, ' '); RijndaelManaged rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey); rijndaelProvider.IV = Keys; ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor(); byte[] inputData = Convert.FromBase64String(decryptString); byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length); return Encoding.UTF8.GetString(decryptedData); } catch { return ""; } } } /// <summary> /// 加密 /// </summary> public class DES { //默认密钥向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <param name="encryptKey">加密密钥,要求为8位</param> /// <returns>加密成功返回加密后的字符串,失败返回源串</returns> public static string Encode(string encryptString, string encryptKey) { encryptKey = GF_GET.GetSubString(encryptKey, 8, ""); encryptKey = encryptKey.PadRight(8, ' '); byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = Keys; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString">待解密的字符串</param> /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param> /// <returns>解密成功返回解密后的字符串,失败返源串</returns> public static string Decode(string decryptString, string decryptKey) { try { decryptKey = GF_GET.GetSubString(decryptKey, 8, ""); decryptKey = decryptKey.PadRight(8, ' '); byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte[] rgbIV = Keys; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return ""; } } } /// <summary> /// MD5函数 /// </summary> /// <param name="str">原始字符串</param> /// <returns>MD5结果</returns> public static string MD5(string str) { byte[] b = Encoding.UTF8.GetBytes(str); b = new MD5CryptoServiceProvider().ComputeHash(b); string ret = ""; for (int i = 0; i < b.Length; i++) ret += b[i].ToString("x").PadLeft(2, '0'); return ret; } /// <summary> /// SHA256函数 /// </summary> /// /// <param name="str">原始字符串</param> /// <returns>SHA256结果</returns> public static string SHA256(string str) { byte[] SHA256Data = Encoding.UTF8.GetBytes(str); SHA256Managed Sha256 = new SHA256Managed(); byte[] Result = Sha256.ComputeHash(SHA256Data); return Convert.ToBase64String(Result); //返回长度为44字节的字符串 } }
相关文章推荐
- C#全角半角转换函数
- C#中转换函数Convert、Parse、TryParse、(int) 的区别
- C# 全角/半角转换函数
- c#两种方式 dataset 与byte[] 字节的转换函数
- C#大小写字母转换函数
- C#日期转换函数分享
- C#全角半角转换函数
- C#全角半角转换函数
- C#中HTML字符转换函数
- 用C#实现的十进制和十六进制的转换函数
- C# 转换函数 (Stream to Byte[],Byte to Image,Image to Byte[],Image缩放,Byte[] to Bitmap)
- c#串口的十六进制发送转换函数
- C#中HTML字符转换函数分享
- C# 颜色转换函数
- C#全角半角转换函数
- C#全角半角转换函数代码分享
- C#全角半角相互转换函数
- C#中HTML字符转换函数
- c# 全角(SBC)和半角(DBC)相互转换函数
- C#中HTML字符转换函数分享