【C#】常用的一些方法

9 篇文章 0 订阅

    记录一下一些在编程过程中常用的方法

1.获取时间戳    

 public static long GetTimeSpan()
        {
            var time = DateTime.Now;
            DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new     System.DateTime(1970, 1, 1, 0, 0, 0, 0));//提示已过时
//DateTime startTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Utc, TimeZoneInfo.Local); //新的
            long t = (time.Ticks - startTime.Ticks) / 10000;   //除10000调整为13位      
            return t;
        }

2.Base64编码

  public static string Base64Code(string Message)
        {
            byte[] encData_byte = new byte[Message.Length];
            encData_byte = System.Text.Encoding.UTF8.GetBytes(Message);
            string encodedData = Convert.ToBase64String(encData_byte);
            return encodedData;
        }

3.Md5加密

 public static string Md5Create(string value, string signMethod = "md5")
        {
            // 第三步:使用MD5/HMAC加密
            byte[] bytes;
            if (Constants.SIGN_METHOD_HMAC.Equals(signMethod))
            {
                HMACMD5 hmac = new HMACMD5();
                bytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(value.ToString()));
                hmac.Dispose();
            }
            else
            {
                MD5 md5 = MD5.Create();
                bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(value.ToString()));
                md5.Dispose();
            }

            // 第四步:把二进制转化为大写的十六进制
            StringBuilder result = new StringBuilder();
            for (int i = 0; i < bytes.Length; i++)
            {
                result.Append(bytes[i].ToString("X2"));
            }
            return result.ToString();
        }

 

4.短链接算法(不记得从哪抄的)

  public static string[] ShortUrl(string url)
         {
             //可以自定义生成MD5加密字符传前的混合KEY
             string key = "aleader";
             //要使用生成URL的字符
             string[] chars = new string[]
             {
                 "a", "b", "c", "d", "e", "f", "g", "h",
                 "i", "j", "k", "l", "m", "n", "o", "p",
                 "q", "r", "s", "t", "u", "v", "w", "x",
                 "y", "z", "0", "1", "2", "3", "4", "5",
                 "6", "7", "8", "9", "A", "B", "C", "D",
                 "E", "F", "G", "H", "I", "J", "K", "L",
                 "M", "N", "O", "P", "Q", "R", "S", "T",
                 "U", "V", "W", "X", "Y", "Z"
             };
             //对传入网址进行MD5加密
             string hex = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key + url, "md5");

             string[] resUrl = new string[4];
             for (int i = 0; i< 4; i++)
             {
                 //把加密字符按照8位一组16进制与0x3FFFFFFF进行位与运算
                 int hexint = 0x3FFFFFFF & Convert.ToInt32("0x" + hex.Substring(i * 8, 8), 16);
                 string outChars = string.Empty;
                 for (int j = 0; j< 6; j++)
                 {
                     //把得到的值与0x0000003D进行位与运算,取得字符数组chars索引
                     int index = 0x0000003D & hexint;
                     //把取得的字符相加
                     outChars += chars[index];
                     //每次循环按位右移5位
                     hexint = hexint >> 5;
                 }
                 //把字符串存入对应索引的输出数组
                 resUrl[i] = outChars;
             }
             return resUrl;
         }

5.url编码(对大小写有要求的情况下)


       public static string UrlEncoding(string content)
        {
            var result = new StringBuilder();
            foreach (char c in content)
            {
                var u = HttpUtility.UrlEncode(c.ToString());
                if (u.Length > 1)
                {
                    u=u.ToUpper();
                }
                result.Append(u);
            }
            return result.ToString();
        }

6.HttpGet

7.HttpPost

8.DataTable 转 List<Dcitionary<string,object>>(可用于直接接口返回输出成json)

 public static List<object> DataTableToList(DataTable table)
        {
            if (table != null)
            {
                List<object> result = new List<object>();
                if (table.Rows.Count > 0)
                {
                    foreach (DataRow row in table.Rows)
                    {
                        Dictionary<string, object> item = new Dictionary<string, object>();
                        for (int i = 0; i < table.Columns.Count; i++)
                        {
                            item.Add(table.Columns[i].ColumnName, table.Columns[i].DataType.Name.Equals("DateTime") ? row[i].ToString() : row[i]);
                        }
                        result.Add(item);
                    }
                }
                return result;
            }
            return null;
        }

9.(DataSet)DataTable 转 IList<T>(这个原项目里是别人写的)

public static IList<T> DataSetToIList<T>(DataSet p_DataSet, int p_TableIndex)
        {
            if (p_DataSet == null || p_DataSet.Tables.Count < 0)
                return null;
            if (p_TableIndex > p_DataSet.Tables.Count - 1)
                return null;
            if (p_TableIndex < 0)
                p_TableIndex = 0;

            DataTable p_Data = p_DataSet.Tables[p_TableIndex];
            // 返回值初始化 
            IList<T> result = new List<T>();
            for (int j = 0; j < p_Data.Rows.Count; j++)
            {
                T _t = (T)Activator.CreateInstance(typeof(T));
                PropertyInfo[] propertys = _t.GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    for (int i = 0; i < p_Data.Columns.Count; i++)
                    {
                        // 属性与字段名称一致的进行赋值 
                        if (pi.Name.Equals(p_Data.Columns[i].ColumnName))
                        {
                            if (p_Data.Columns[i].DataType.Name != pi.PropertyType.Name)
                            {
                                pi.SetValue(_t, p_Data.Rows[j][i].ToString(), null);
                            }
                            else
                            {
                                // 数据库NULL值单独处理 
                                if (p_Data.Rows[j][i] != DBNull.Value)
                                    pi.SetValue(_t, p_Data.Rows[j][i], null);
                                else
                                    pi.SetValue(_t, null, null);
                                break;
                            }
                        }
                    }
                }
                result.Add(_t);
            }
            return result;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沃祐进先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值