AIMS/AIMSExtension/GPFunctions.cs
2022-08-23 21:12:59 +08:00

1659 lines
35 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Management;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
namespace AIMSExtension
{
public static class GPFunctions
{
public static int CInt<T>(T t)
{
int result = 0;
try
{
result = Convert.ToInt32(t);
}
catch (Exception)
{
result = 0;
}
return result;
}
public static int IntParse<T>(T t)
{
bool flag = t == null;
int result;
if (flag)
{
result = 0;
}
else
{
result = GPFunctions.IntParse(t.ToString());
}
return result;
}
public static int IntParse(string strnum)
{
strnum = strnum.Trim();
bool flag = strnum == null || strnum.Length == 0;
int result;
if (flag)
{
result = 0;
}
else
{
int length = strnum.Length;
int num = length;
for (int i = 0; i < length; i++)
{
string text = strnum.Substring(i, 1);
bool flag2 = text.CompareTo("0") < 0 || text.CompareTo("9") > 0;
if (flag2)
{
num = i;
break;
}
}
bool flag3 = num == 0;
if (flag3)
{
result = 0;
}
else
{
result = Convert.ToInt32(strnum.Substring(0, num));
}
}
return result;
}
public static bool CBool(string val)
{
bool flag = val == null;
bool result;
if (flag)
{
result = false;
}
else
{
val = val.Trim().ToLower();
bool flag2 = val == "true" || val == "false";
if (flag2)
{
result = bool.Parse(val);
}
else
{
bool flag3 = GPFunctions.CDecimal<string>(val).CompareTo(decimal.Zero) == 0;
result = !flag3;
}
}
return result;
}
public static bool CBool<T>(T t)
{
bool flag = t == null;
return !flag && GPFunctions.CBool(t.ToString());
}
public static long CLng<T>(T t)
{
long result = 0L;
try
{
result = Convert.ToInt64(t);
}
catch (Exception)
{
result = 0L;
}
return result;
}
public static decimal CDecimal<T>(T t)
{
decimal result = 0m;
try
{
result = Convert.ToDecimal(t);
}
catch (Exception)
{
result = 0m;
}
return result;
}
public static double CDbl<T>(T t)
{
double num = 0.0;
try
{
num = Convert.ToDouble(t);
bool flag = num != 0.0;
if (flag)
{
bool flag2 = num > 0.0;
if (flag2)
{
num = Math.Round(num + 1E-08, 6);
}
else
{
num = Math.Round(num - 1E-08, 6);
}
}
}
catch (Exception)
{
num = 0.0;
}
return num;
}
public static DateTime CDate<T>(T t)
{
DateTime result = new DateTime(1, 1, 1);
try
{
result = Convert.ToDateTime(t);
}
catch (Exception)
{
}
return result;
}
public static DateTime CDate2(string yyyyMMddHHmmss)
{
int length = yyyyMMddHHmmss.Length;
bool flag = length < 8;
DateTime result;
if (flag)
{
result = new DateTime(1, 1, 1);
}
else
{
int hour = 0;
int minute = 0;
int second = 0;
int year = Convert.ToInt32(yyyyMMddHHmmss.Substring(0, 4));
int month = Convert.ToInt32(yyyyMMddHHmmss.Substring(4, 2));
int day = Convert.ToInt32(yyyyMMddHHmmss.Substring(6, 2));
bool flag2 = length == 8;
if (flag2)
{
result = new DateTime(year, month, day);
}
else
{
bool flag3 = length >= 10;
if (flag3)
{
hour = Convert.ToInt32(yyyyMMddHHmmss.Substring(8, 2));
}
bool flag4 = length >= 12;
if (flag4)
{
minute = Convert.ToInt32(yyyyMMddHHmmss.Substring(10, 2));
}
bool flag5 = length >= 14;
if (flag5)
{
second = Convert.ToInt32(yyyyMMddHHmmss.Substring(12, 2));
}
result = new DateTime(year, month, day, hour, minute, second);
}
}
return result;
}
public static string CStr<T>(T t)
{
bool flag = t == null;
string result;
if (flag)
{
result = "";
}
else
{
result = t.ToString();
}
return result;
}
public static string CStr<T>(T t, int len)
{
string text = GPFunctions.CStr<T>(t);
return (len > text.Length) ? text : text.Substring(0, len);
}
public static string CStrEx<T>(T t)
{
string text = GPFunctions.CStr<T>(t);
bool flag = string.IsNullOrWhiteSpace(text);
string result;
if (flag)
{
result = "";
}
else
{
result = Regex.Replace(text, "^\\s+|\\s+$", "");
}
return result;
}
public static string CStrEx<T>(T t, int len)
{
string text = GPFunctions.CStr<T>(t);
bool flag = string.IsNullOrWhiteSpace(text);
string result;
if (flag)
{
result = "";
}
else
{
text = Regex.Replace(text, "^\\s+|\\s+$", "");
result = ((len > text.Length) ? text : text.Substring(0, len));
}
return result;
}
public static int GetNvarcharLength(string str)
{
bool flag = string.IsNullOrWhiteSpace(str);
int result;
if (flag)
{
result = 0;
}
else
{
byte[] bytes = Encoding.Default.GetBytes(str);
result = bytes.Length;
}
return result;
}
public static string GetVarcharLengthStr(string str, int len)
{
bool flag = string.IsNullOrWhiteSpace(str);
string result;
if (flag)
{
result = "";
}
else
{
byte[] bytes = Encoding.Default.GetBytes(str);
int num = bytes.Length;
bool flag2 = num <= len;
if (flag2)
{
result = str;
}
else
{
bool flag3 = bytes[len - 1] <= 127;
if (flag3)
{
result = Encoding.Default.GetString(bytes, 0, len);
}
else
{
result = Encoding.Default.GetString(bytes, 0, len - 1);
}
}
}
return result;
}
public static string Trim(string strnum)
{
string text = strnum.Trim();
bool flag = string.IsNullOrWhiteSpace(strnum);
string result;
if (flag)
{
result = "";
}
else
{
result = Regex.Replace(strnum, "^\\s+|\\s+$", "");
}
return result;
}
public static bool IsMail(string fmail)
{
Regex regex = new Regex("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$");
return regex.IsMatch(fmail);
}
public static bool IsIPv4Adress(string ipstr)
{
int[] array = GPFunctions.StringToIntArray(ipstr, '.');
bool flag = array.Length != 4;
bool result;
if (flag)
{
result = false;
}
else
{
for (int i = 0; i < 4; i++)
{
int num = array[i];
bool flag2 = i == 0;
if (flag2)
{
bool flag3 = num < 1 || num > 255;
if (flag3)
{
result = false;
return result;
}
}
else
{
bool flag4 = num < 0 || num > 255;
if (flag4)
{
result = false;
return result;
}
}
}
result = true;
}
return result;
}
public static bool IsMobile(string mobile)
{
Regex regex = new Regex("[1-9]\\d{10}");
return regex.IsMatch(mobile);
}
public static bool IsMobile(long mobile)
{
return mobile >= 10000000000L && mobile <= 99999999999L;
}
public static bool IsAllNumber(string inStr)
{
string text = GPFunctions.CStrEx<string>(inStr);
int length = text.Length;
bool flag = length == 0;
bool result;
if (flag)
{
result = false;
}
else
{
for (int i = 0; i < length; i++)
{
char c = text[i];
bool flag2 = c != '.' && (c < '0' || c > '9');
if (flag2)
{
result = false;
return result;
}
}
result = true;
}
return result;
}
public static bool IsAscIIString(string input)
{
bool flag = true;
bool flag2 = string.IsNullOrWhiteSpace(input);
bool result;
if (flag2)
{
result = true;
}
else
{
int length = input.Length;
for (int i = 0; i < length; i++)
{
char value = input[i];
bool flag3 = Convert.ToByte(value) > 127;
if (flag3)
{
flag = false;
break;
}
}
result = flag;
}
return result;
}
public static bool IsVariableString(string input)
{
Regex regex = new Regex("^[_a-zA-Z]\\w*$");
bool flag = string.IsNullOrWhiteSpace(input);
return !flag && regex.IsMatch(input);
}
public static string SqlDateStr(DateTime d)
{
bool flag = d.Year <= 1;
string result;
if (flag)
{
result = "NULL";
}
else
{
result = string.Format("'{0}'", GPFunctions.DateTimeStr(d));
}
return result;
}
public static string SqlDateStr(object dateObj)
{
bool flag = dateObj == DBNull.Value;
string result;
if (flag)
{
result = "NULL";
}
else
{
bool flag2 = dateObj.GetType().Name == "DateTime";
if (flag2)
{
DateTime d = Convert.ToDateTime(dateObj);
result = GPFunctions.SqlDateStr(d);
}
else
{
string text = "NULL";
DateTime d;
bool flag3 = DateTime.TryParse(dateObj.ToString(), out d);
if (flag3)
{
text = GPFunctions.SqlDateStr(d);
}
result = text;
}
}
return result;
}
public static string DateStr(DateTime d)
{
return d.ToString("yyyy/MM/dd");
}
public static string DateTimeStr(DateTime d)
{
bool flag = d.Hour + d.Minute + d.Second == 0;
string result;
if (flag)
{
result = d.ToString("yyyy/MM/dd");
}
else
{
result = d.ToString("yyyy/MM/dd HH:mm:ss");
}
return result;
}
public static string Now()
{
return DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
public static string Today()
{
return DateTime.Now.Date.ToString("yyyy/MM/dd");
}
public static int GetTimeStamp(DateTime d)
{
return Convert.ToInt32(d.Subtract(DateTime.Parse("1970/1/1")).TotalSeconds);
}
public static int GetUnixTimeStamp(DateTime d)
{
return Convert.ToInt32(d.Subtract(DateTime.Parse("1970/1/1 8:0:0")).TotalSeconds);
}
public static string BigIntToTimestamp(long i64)
{
string text = i64.ToString("X2");
int length = text.Length;
return "0x0000000000000000".Substring(0, 18 - length) + text;
}
public static DateTime IntToTime(int totalSeconds)
{
return DateTime.Parse("1970/1/1").AddSeconds((double)(totalSeconds + 86400));
}
public static long TimeOf()
{
return GPFunctions.TimeOf(DateTime.Now);
}
public static long TimeOf(DateTime t)
{
DateTime d = new DateTime(1970, 1, 1);
return (long)(t - d).TotalSeconds;
}
public static DateTime OracleTime()
{
DateTime now = DateTime.Now;
return new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second);
}
public static DateTime OracleTime(DateTime d)
{
return new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
}
public static Dictionary<string, string> StringToDict(string str, string rowdeli, string coldeli)
{
string text = str.Trim();
string[] array = Regex.Split(str, rowdeli);
int num = array.Length;
Dictionary<string, string> dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < num; i++)
{
string[] array2 = Regex.Split(array[i], coldeli);
bool flag = array2.Length > 1;
if (flag)
{
string text2 = array2[0].Trim();
bool flag2 = text2.Length > 0;
if (flag2)
{
dictionary[text2] = array2[1].Trim();
}
}
}
return dictionary;
}
public static Dictionary<string, string> StringToDict(string str, char rowdeli, char coldeli)
{
string text = str.Trim();
string[] array = text.Split(new char[]
{
rowdeli
});
int num = array.Length;
Dictionary<string, string> dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < num; i++)
{
string[] array2 = array[i].Split(new char[]
{
coldeli
});
bool flag = array2.Length > 1;
if (flag)
{
string text2 = array2[0].Trim();
bool flag2 = text2.Length > 0;
if (flag2)
{
dictionary[text2] = array2[1].Trim();
}
}
}
return dictionary;
}
public static Dictionary<string, int> StringToDictInt(string str, char rowdeli, char coldeli)
{
string text = str.Trim();
string[] array = text.Split(new char[]
{
rowdeli
});
int num = array.Length;
Dictionary<string, int> dictionary = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < num; i++)
{
string[] array2 = array[i].Split(new char[]
{
coldeli
});
bool flag = array2.Length > 1;
if (flag)
{
string text2 = array2[0].Trim();
bool flag2 = text2.Length > 0;
if (flag2)
{
dictionary[text2] = GPFunctions.CInt<string>(array2[1].Trim());
}
}
}
return dictionary;
}
public static string DictionaryToString<TKey, TValue>(Dictionary<TKey, TValue> dic, string rowdeli, string coldeli)
{
int num = dic.Count;
string[] array = new string[num];
num = 0;
foreach (KeyValuePair<TKey, TValue> current in dic)
{
string[] arg_57_0 = array;
int expr_26 = num++;
string arg_52_0 = "{0}{1}{2}";
object arg_52_1 = current.Key;
TValue value = current.Value;
arg_57_0[expr_26] = string.Format(arg_52_0, arg_52_1, coldeli, value.ToString());
}
return string.Join(rowdeli, array);
}
public static string DictionaryToString(IDictionary dic, string rowdeli, string coldeli)
{
int num = dic.Count;
string[] array = new string[num];
num = 0;
foreach (DictionaryEntry dictionaryEntry in dic)
{
bool flag = dictionaryEntry.Value.GetType().Name.IndexOf("Dictionary") >= 0;
if (flag)
{
Type[] genericArguments = dictionaryEntry.Value.GetType().GetGenericArguments();
bool flag2 = genericArguments.Length == 2;
if (flag2)
{
string arg = GPFunctions.DictionaryToString((IDictionary)dictionaryEntry.Value, rowdeli, coldeli);
array[num++] = string.Format("{0}{1}{{{2}}}", dictionaryEntry.Key, coldeli, arg);
}
}
else
{
array[num++] = string.Format("{0}{1}{2}", dictionaryEntry.Key, coldeli, dictionaryEntry.Value.ToString());
}
}
return string.Join(rowdeli, array);
}
public static string SortedKeyValue(string str, char colchar, char rowchar)
{
SortedDictionary<string, string> sortedDictionary = new SortedDictionary<string, string>();
string[] array = str.Split(new char[]
{
rowchar
});
string[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
string text = array2[i];
bool flag = text.Length > 0;
if (flag)
{
string[] array3 = text.Split(new char[]
{
colchar
});
bool flag2 = array3.Length == 2;
if (flag2)
{
string text2 = array3[0].Trim();
bool flag3 = text2.Length > 0;
if (flag3)
{
sortedDictionary[text2] = array3[1];
}
}
}
}
return GPFunctions.SortedKeyValue(sortedDictionary, colchar, rowchar);
}
public static string SortedKeyValue(SortedDictionary<string, string> d, char colchar, char rowchar)
{
StringBuilder stringBuilder = new StringBuilder();
int num = 0;
string value = (rowchar == '\0') ? "" : rowchar.ToString();
foreach (KeyValuePair<string, string> current in d)
{
bool flag = num > 0;
if (flag)
{
stringBuilder.Append(value);
}
else
{
num++;
}
stringBuilder.Append(current.Key + colchar.ToString() + current.Value);
}
return stringBuilder.ToString();
}
public static string SortedKeyValue(Dictionary<string, string> d, char colchar, char rowchar)
{
SortedDictionary<string, string> sortedDictionary = new SortedDictionary<string, string>();
foreach (KeyValuePair<string, string> current in d)
{
sortedDictionary.Add(current.Key, current.Value);
}
return GPFunctions.SortedKeyValue(sortedDictionary, colchar, rowchar);
}
public static string Random(int n)
{
StringBuilder stringBuilder = new StringBuilder();
int seed = Convert.ToInt32((DateTime.Now - new DateTime(0L)).TotalMilliseconds);
Random random = new Random(seed);
string text = "1234567890ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz!@$%^&*()-_=+[]{}|\\;:’”,.<>?/`~";
for (int i = 0; i < n; i++)
{
int index = random.Next(90);
stringBuilder.Append(text[index]);
}
return stringBuilder.ToString();
}
public static string RandomInt(int n)
{
int seed = Convert.ToInt32((DateTime.Now - new DateTime(0L)).TotalMilliseconds);
Random random = new Random(seed);
int num = (int)Math.Pow(10.0, (double)n) - 1;
string text = random.Next(num).ToString();
num = text.Length;
bool flag = num == n;
string result;
if (flag)
{
result = text;
}
else
{
result = "00000".Substring(0, n - num) + text;
}
return result;
}
public static string SqlEncode(string s)
{
return s.Replace("'", "''");
}
public static string JsonString(string keyval)
{
return "\"" + keyval + "\"";
}
public static string EncodeJsonValue(string s)
{
bool flag = s == null || s == "";
string result;
if (flag)
{
result = "";
}
else
{
result = s.Replace("\"", "\\\"").Replace(Convert.ToString('\r'), "\\r").Replace(Convert.ToString('\n'), "\\n");
}
return result;
}
public static string HtmlDecode(string s)
{
return s.Replace("&amp;", "&").Replace("&lt;", "<").Replace("&gt;", ">").Replace("&nbsp;", " ").Replace("&apos;", "'").Replace("&quot;", "\"");
}
public static string RepeatString(string s, int num)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < num; i++)
{
stringBuilder.Append(s);
}
return stringBuilder.ToString();
}
public static int[] StringToIntArray(string ints)
{
return GPFunctions.StringToIntArray(ints, ',');
}
public static int[] StringToIntArray(string ints, char delimeter)
{
return GPFunctions.StringToListInt(ints, delimeter).ToArray();
}
public static string[] StringToStringArray(string strs)
{
return GPFunctions.StringToStringArray(strs, ',');
}
public static string[] StringToStringArray(string strs, char delimeter)
{
return GPFunctions.StringToListString(strs, delimeter).ToArray();
}
public static List<string> StringToListString(string strs, char delimeter)
{
List<string> list = new List<string>();
string[] array = strs.Split(new char[]
{
delimeter
});
int i = 0;
int num = array.Length;
while (i < num)
{
string text = array[i].Trim();
bool flag = text.Length > 0;
if (flag)
{
list.Add(text);
}
i++;
}
return list;
}
public static List<int> StringToListInt(string ints, char delimeter)
{
List<int> list = new List<int>();
string[] array = ints.Split(new char[]
{
delimeter
});
int i = 0;
int num = array.Length;
while (i < num)
{
string text = array[i].Trim();
bool flag = text.Length > 0;
if (flag)
{
list.Add(Convert.ToInt32(text));
}
i++;
}
return list;
}
public static string InSQLStringInt(string idsstr, char deli)
{
string a = idsstr.Replace(" ", "");
bool flag = a == "";
if (flag)
{
throw new Exception(string.Format("Invalid Parameter(idsstr={0})。", idsstr));
}
string[] array = idsstr.Split(new char[]
{
deli
});
Dictionary<int, int> dictionary = new Dictionary<int, int>();
int i = 0;
int num = array.Length;
while (i < num)
{
int key = GPFunctions.CInt<string>(array[i]);
dictionary[key] = 1;
i++;
}
return string.Join<int>(",", dictionary.Keys);
}
public static string InSQLStringDecimal(string idsstr, char deli)
{
string a = idsstr.Replace(" ", "");
bool flag = a == "";
if (flag)
{
throw new Exception(string.Format("Invalid Parameter(idsstr={0})。", idsstr));
}
string[] array = idsstr.Split(new char[]
{
deli
});
Dictionary<string, decimal> dictionary = new Dictionary<string, decimal>();
decimal value = 0m;
int i = 0;
int num = array.Length;
while (i < num)
{
value = GPFunctions.CDecimal<string>(array[i]);
dictionary[value.ToString()] = value;
i++;
}
return string.Join(",", dictionary.Keys);
}
public static string GetIdsTable(string ids)
{
string[] idarr = ids.Split(new char[]
{
','
});
return GPFunctions.GetIdsTable(idarr);
}
public static string GetIdsTable(string ids, char deli)
{
string[] idarr = ids.Split(new char[]
{
deli
});
return GPFunctions.GetIdsTable(idarr);
}
public static string GetIdsTable(string[] idarr)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < idarr.Length; i++)
{
bool flag = i > 0;
if (flag)
{
stringBuilder.Append(" UNION ");
}
stringBuilder.Append(string.Format("SELECT {0} as xh, {1} as id", i, idarr[i]));
}
return stringBuilder.ToString();
}
public static byte[] HexStringToBytes(string hexstr)
{
hexstr = hexstr.Trim();
int num = hexstr.Length;
bool flag = num % 2 != 0;
if (flag)
{
hexstr += " ";
num++;
}
int num2 = num / 2;
byte[] array = new byte[num2];
for (int i = 0; i < num2; i++)
{
string value = hexstr.Substring(i * 2, 2);
array[i] = Convert.ToByte(Convert.ToInt16(value, 16));
}
return array;
}
public static byte[] HexStringToBytes(string hexstr, char seperator)
{
string[] array = hexstr.Trim().Split(new char[]
{
seperator
});
int num = array.Length;
byte[] array2 = new byte[num];
for (int i = 0; i < num; i++)
{
string value = array[i];
array2[i] = Convert.ToByte(Convert.ToInt32(value, 16));
}
return array2;
}
public static int BytesIndexOf(byte[] source, int startPos, byte[] pattern)
{
int num = source.Length;
int num2 = pattern.Length;
bool flag = num < num2;
int result;
if (flag)
{
result = -1;
}
else
{
bool flag2 = num2 == 1;
if (flag2)
{
byte b = pattern[0];
for (int i = startPos; i < num; i++)
{
bool flag3 = source[i] == b;
if (flag3)
{
result = i;
return result;
}
}
result = -1;
}
else
{
for (int j = startPos; j < num - num2 + 1; j++)
{
for (int k = 0; k < num2; k++)
{
bool flag4 = source[j + k] != pattern[k];
if (flag4)
{
break;
}
bool flag5 = k == num2 - 1;
if (flag5)
{
result = j;
return result;
}
}
}
result = -1;
}
}
return result;
}
public static int BytesIndexOf(List<byte> source, int startPos, byte[] pattern)
{
int count = source.Count;
int num = pattern.Length;
bool flag = count < num;
int result;
if (flag)
{
result = -1;
}
else
{
bool flag2 = num == 1;
if (flag2)
{
byte b = pattern[0];
for (int i = startPos; i < count; i++)
{
bool flag3 = source[i] == b;
if (flag3)
{
result = i;
return result;
}
}
result = -1;
}
else
{
for (int j = startPos; j < count - num + 1; j++)
{
for (int k = 0; k < num; k++)
{
bool flag4 = source[j + k] != pattern[k];
if (flag4)
{
break;
}
bool flag5 = k == num - 1;
if (flag5)
{
result = j;
return result;
}
}
}
result = -1;
}
}
return result;
}
public static string BytesToDecimalString(byte[] bits, char deli = ' ')
{
int num = bits.Length;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < num; i++)
{
bool flag = i == 0;
if (flag)
{
stringBuilder.Append(bits[i].ToString().PadLeft(3));
}
else
{
stringBuilder.Append(string.Format("{0}{1}", deli, bits[i].ToString().PadLeft(3)));
}
}
return stringBuilder.ToString();
}
public static string BytesToHexString(byte[] bits)
{
int num = bits.Length;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < num; i++)
{
stringBuilder.Append(bits[i].ToString("x2"));
}
return stringBuilder.ToString();
}
public static string BytesToHexString(byte[] bits, int length)
{
int num = bits.Length;
bool flag = num > length;
if (flag)
{
num = length;
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < num; i++)
{
stringBuilder.Append(bits[i].ToString("x2"));
}
return stringBuilder.ToString();
}
public static string BytesToHexString(byte[] bits, char seperator)
{
return GPFunctions.BytesToHexString(bits, seperator, bits.Length);
}
public static string BytesToHexString(byte[] bits, char seperator, int length)
{
int num = bits.Length;
bool flag = num > length;
if (flag)
{
num = length;
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < num; i++)
{
bool flag2 = i == 0;
if (flag2)
{
stringBuilder.Append(bits[i].ToString("X2"));
}
else
{
stringBuilder.Append(seperator.ToString() + bits[i].ToString("X2"));
}
}
return stringBuilder.ToString();
}
public static string StringToHexString(string s, string charset)
{
Encoding encoding = Encoding.GetEncoding(charset);
byte[] bytes = encoding.GetBytes(s);
return GPFunctions.BytesToHexString(bytes);
}
public static string StringToHexString(string s, Encoding encode)
{
byte[] bytes = encode.GetBytes(s);
return GPFunctions.BytesToHexString(bytes);
}
public static string HexStringToString(string hex, Encoding encode)
{
bool flag = hex == null;
string result;
if (flag)
{
result = "";
}
else
{
bool flag2 = hex.Length == 0;
if (flag2)
{
result = "";
}
else
{
byte[] bytes = GPFunctions.HexStringToBytes(hex);
result = encode.GetString(bytes);
}
}
return result;
}
public static string HexStringToString(string hex, string charset)
{
bool flag = hex == null;
string result;
if (flag)
{
result = "";
}
else
{
bool flag2 = hex.Length == 0;
if (flag2)
{
result = "";
}
else
{
byte[] bytes = GPFunctions.HexStringToBytes(hex);
Encoding encoding = Encoding.GetEncoding(charset);
result = encoding.GetString(bytes);
}
}
return result;
}
public static string ConvertCodeString(string tbdstr, string charset1, string charset2)
{
bool flag = tbdstr == null;
string result;
if (flag)
{
result = "";
}
else
{
bool flag2 = tbdstr.Length == 0;
if (flag2)
{
result = "";
}
else
{
Encoding encoding = Encoding.GetEncoding(charset1);
Encoding encoding2 = Encoding.GetEncoding(charset2);
byte[] bytes = encoding.GetBytes(tbdstr);
byte[] bytes2 = Encoding.Convert(encoding, encoding2, bytes);
string @string = encoding2.GetString(bytes2);
result = @string;
}
}
return result;
}
public static string Utf8ToGBK(string utf8)
{
Encoding encoding = Encoding.GetEncoding("UTF-8");
Encoding encoding2 = Encoding.GetEncoding("GBK");
byte[] bytes = encoding.GetBytes(utf8);
byte[] bits = Encoding.Convert(encoding, encoding2, bytes);
return GPFunctions.BytesToHexString(bits, '%');
}
public static string GetHostName()
{
return Dns.GetHostName();
}
//public static List<MyKeyValue> GetNetworkAdpaterID()
//{
// List<MyKeyValue> list = new List<MyKeyValue>();
// NetworkInterface[] allNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
// NetworkInterface[] array = allNetworkInterfaces;
// for (int i = 0; i < array.Length; i++)
// {
// NetworkInterface networkInterface = array[i];
// MyKeyValue myKeyValue = new MyKeyValue();
// myKeyValue.Key = networkInterface.Name;
// string text = networkInterface.GetPhysicalAddress().ToString();
// bool flag = text.Length > 0 && !text.StartsWith("00");
// if (flag)
// {
// byte[] bits = GPFunctions.HexStringToBytes(text);
// text = GPFunctions.BytesToHexString(bits, ':');
// myKeyValue.Value = text.ToUpper();
// list.Add(myKeyValue);
// }
// }
// return list;
//}
//public static List<string> GetMacAddress()
//{
// List<string> list = new List<string>();
// ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
// ManagementObjectCollection instances = managementClass.GetInstances();
// using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = instances.GetEnumerator())
// {
// while (enumerator.MoveNext())
// {
// ManagementObject managementObject = (ManagementObject)enumerator.Current;
// bool flag = managementObject["IPEnabled"].ToString() == "True";
// if (flag)
// {
// string text = managementObject["MacAddress"].ToString();
// bool flag2 = !text.StartsWith("00");
// if (flag2)
// {
// list.Add(managementObject["MacAddress"].ToString());
// }
// }
// }
// }
// bool flag3 = list.Count == 0;
// if (flag3)
// {
// list.Add("98-2C-BC-1C-6B-A5");
// }
// return list;
//}
public static List<string> GetIPAddress()
{
List<string> list = new List<string>();
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPAddress[] addressList = hostEntry.AddressList;
for (int i = 0; i < addressList.Length; i++)
{
IPAddress iPAddress = addressList[i];
bool flag = iPAddress.AddressFamily == AddressFamily.InterNetwork;
if (flag)
{
list.Add(iPAddress.ToString());
}
}
bool flag2 = list.Count == 0;
if (flag2)
{
list.Add("127.0.0.1");
}
return list;
}
public static List<string> GetIPAddress(string ipstr)
{
List<string> list = new List<string>();
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPAddress[] addressList = hostEntry.AddressList;
for (int i = 0; i < addressList.Length; i++)
{
IPAddress iPAddress = addressList[i];
bool flag = iPAddress.AddressFamily == AddressFamily.InterNetwork;
if (flag)
{
string text = iPAddress.ToString();
bool flag2 = text.CompareTo(ipstr) == 0;
if (flag2)
{
list.Clear();
list.Add(text);
break;
}
list.Add(text);
}
}
bool flag3 = list.Count == 0;
if (flag3)
{
list.Add("127.0.0.1");
}
return list;
}
public static List<string> GetIPAddress(string ipstr, string excludedIP)
{
List<string> list = new List<string>();
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPAddress[] addressList = hostEntry.AddressList;
for (int i = 0; i < addressList.Length; i++)
{
IPAddress iPAddress = addressList[i];
bool flag = iPAddress.AddressFamily == AddressFamily.InterNetwork;
if (flag)
{
string text = iPAddress.ToString();
bool flag2 = ipstr.Length > 0 && text.CompareTo(ipstr) == 0;
if (flag2)
{
list.Clear();
list.Add(text);
break;
}
bool flag3 = !text.StartsWith(excludedIP);
if (flag3)
{
list.Add(text);
}
}
}
bool flag4 = list.Count == 0;
if (flag4)
{
list.Add("127.0.0.1");
}
return list;
}
public static uint IPToUInt32(string ip)
{
string[] array = ip.Split(new char[]
{
'.'
});
bool flag = array.Length != 4;
uint result;
if (flag)
{
result = 0u;
}
else
{
byte[] array2 = new byte[4];
for (int i = 0; i < 4; i++)
{
array2[3 - i] = Convert.ToByte(array[i]);
}
result = BitConverter.ToUInt32(array2, 0);
}
return result;
}
public static string GetCMDResult(string cmd, string parameters)
{
Process process = null;
string result = string.Empty;
try
{
process = Process.Start(new ProcessStartInfo(cmd, parameters)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
});
result = process.StandardOutput.ReadToEnd();
}
catch (Exception ex)
{
throw new Exception(string.Format("GetCMDResult '{0} {1}' Exception: {2}", cmd, parameters, ex.Message));
}
finally
{
bool flag = process != null;
if (flag)
{
process.Close();
}
}
return result;
}
public static List<string[]> GetMyIPMacInfo(string infos = "")
{
List<string[]> list = new List<string[]>();
bool flag = string.IsNullOrEmpty(infos);
if (flag)
{
infos = GPFunctions.GetCMDResult("ipconfig", "-all");
}
string[] array = infos.Split(new char[]
{
'\n',
'\r'
}, StringSplitOptions.RemoveEmptyEntries);
string text = "";
string text2 = "";
string text3 = "";
string text4 = "";
string[] array2 = array;
int i = 0;
while (i < array2.Length)
{
string text5 = array2[i];
bool flag2 = text5.Contains(". :");
if (flag2)
{
string[] array3 = text5.Split(new char[]
{
':'
}, StringSplitOptions.RemoveEmptyEntries);
string text6 = array3[1].Trim();
bool flag3 = text6.Length == 0;
if (!flag3)
{
text6 = array3[0].Trim(new char[]
{
' ',
'.'
});
bool flag4 = text6.Contains("IPv4");
if (flag4)
{
text6 = GPFunctions.ReadNumberString(array3[1]);
bool flag5 = GPFunctions.IsIPv4Adress(text6);
if (flag5)
{
text2 = text6;
}
}
else
{
bool flag6 = text6.StartsWith("物理地址");
if (flag6)
{
text3 = array3[1].Trim();
}
else
{
bool flag7 = text6.StartsWith("Physical");
if (flag7)
{
text3 = array3[1].Trim();
}
else
{
bool flag8 = text6.StartsWith("描述");
if (flag8)
{
text4 = array3[1].Trim();
}
else
{
bool flag9 = text6.StartsWith("Description ");
if (flag9)
{
text4 = array3[1].Trim();
}
}
}
}
}
}
}
else
{
bool flag10 = !text5.StartsWith(" ") && text5.EndsWith(":");
if (flag10)
{
int num = text5.IndexOf(" ");
bool flag11 = num > 0;
if (flag11)
{
bool flag12 = text.Length > 0 && text3.Length > 0 && text4.Length > 0 && text2.Length > 0;
if (flag12)
{
list.Add(new string[]
{
text,
text4,
text3,
text2
});
}
text = text5.Substring(num).Trim(new char[]
{
':',
' '
});
text2 = "";
text3 = "";
text4 = "";
}
}
}
i++;
continue;
}
bool flag13 = text.Length > 0 && text3.Length > 0 && text4.Length > 0 && text2.Length > 0;
if (flag13)
{
list.Add(new string[]
{
text,
text4,
text3,
text2
});
}
return list;
}
public static string ReadNumberString(string strnum)
{
strnum = strnum.Trim();
bool flag = strnum == null || strnum.Length == 0;
string result;
if (flag)
{
result = "";
}
else
{
List<char> list = new List<char>();
int length = strnum.Length;
for (int i = 0; i < length; i++)
{
char c = strnum[i];
bool flag2 = c == '.' || (c >= '0' && c <= '9');
if (!flag2)
{
break;
}
list.Add(c);
}
result = string.Join<char>("", list);
}
return result;
}
}
}