现在的位置: 首页 > 综合 > 正文

类型转换大全

2012年08月14日 ⁄ 综合 ⁄ 共 7397字 ⁄ 字号 评论关闭

        /// <summary>
        /// 特列UInt32类型值转换成指定的格式
        /// </summary>
        /// <param name="formatStyle">
        /// 格式参数:
        /// yyyy表示日期的年(4位);yy表示日期的年(2位);
        /// m表示日期的月(自动);mm表示日期的月(2位);
        /// d表示日期的天(自动);dd表示日期的天(2位);
        /// p1表示IP地址的第一部分;p2表示IP地址的第二部分;p3表示IP地址的第三部分;p4表示IP地址的第四部分;
        /// v1表示版本号的第一部分;v2表示版本号的第2部分;[版本号格式:主版本号.次版本号]
        /// vs1表示版本号的第一部分;vs2表示版本号的第2部分;vs3表示版本号的第3部分;vs4表示版本号的第4部分;[版本号格式:x.x.x.x]
        /// </param>
        /// <returns></returns>
        public static string UInt32ToString(UInt32 intValue, string formatStyle)
        {
            //转换为16进制表示值      
            string valueString = intValue.ToString("X");
            string strReturn = formatStyle.ToUpper();
            //格式化
            string strTemp = "00000000";
            strTemp = strTemp.Remove(0, valueString.Length) + valueString;
            string strPart1 = strTemp.Substring(0, 2);
            string strPart2 = strTemp.Substring(2, 2);
            string strPart3 = strTemp.Substring(4, 2);
            string strPart4 = strTemp.Substring(6, 2);
            //日期年的处理
            if (strReturn.IndexOf("YYYY") != -1)
            {
                strReturn = strReturn.Replace("YYYY", int.Parse(strPart1 + strPart2, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("YY") != -1)
            {
                strReturn = strReturn.Replace("YY", (int.Parse(strPart1 + strPart2, System.Globalization.NumberStyles.AllowHexSpecifier) % 100).ToString());
            }
            //日期月的处理
            if (strReturn.IndexOf("MM") != -1)
            {
                int mm = int.Parse(strPart3, System.Globalization.NumberStyles.AllowHexSpecifier);
                strReturn = strReturn.Replace("MM", ((mm > 10 ? mm.ToString() : "0" + mm.ToString())));
            }
            if (strReturn.IndexOf("M") != -1)
            {
                strReturn = strReturn.Replace("M", int.Parse(strPart3, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            //日期日的处理
            if (strReturn.IndexOf("DD") != -1)
            {
                int dd = int.Parse(strPart4, System.Globalization.NumberStyles.AllowHexSpecifier);
                strReturn = strReturn.Replace("DD", ((dd > 10 ? dd.ToString() : "0" + dd.ToString())));
            }
            if (strReturn.IndexOf("D") != -1)
            {
                strReturn = strReturn.Replace("D", int.Parse(strPart4, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            //IP地址的处理
            if (strReturn.IndexOf("P1") != -1)
            {
                strReturn = strReturn.Replace("P1", int.Parse(strPart1, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("P2") != -1)
            {
                strReturn = strReturn.Replace("P2", int.Parse(strPart2, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("P3") != -1)
            {
                strReturn = strReturn.Replace("P3", int.Parse(strPart1, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("P4") != -1)
            {
                strReturn = strReturn.Replace("P4", int.Parse(strPart1, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            //版本号的处理[主版本号.次版本号]
            if (strReturn.IndexOf("V1") != -1)
            {
                strReturn = strReturn.Replace("V1", int.Parse(strPart1 + strPart2, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("V2") != -1)
            {
                strReturn = strReturn.Replace("V2", int.Parse(strPart3 + strPart4, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            //版本号的处理[X.X.X.X]
            if (strReturn.IndexOf("VS1") != -1)
            {
                strReturn = strReturn.Replace("VS1", int.Parse(strPart1, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("VS2") != -1)
            {
                strReturn = strReturn.Replace("VS2", int.Parse(strPart2, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("VS3") != -1)
            {
                strReturn = strReturn.Replace("VS3", int.Parse(strPart1, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            if (strReturn.IndexOf("VS4") != -1)
            {
                strReturn = strReturn.Replace("VS4", int.Parse(strPart1, System.Globalization.NumberStyles.AllowHexSpecifier).ToString());
            }
            return strReturn;
        }

        /// <summary>
        /// 字符数组转换为字符串
        /// </summary>
        /// <param name="charValue">字符数组</param>
        /// <returns>字符串</returns>
        public static string ByteArrayToString(byte[] byteArray)
        {
            //string result = Encoding.GetEncoding("gb2312").GetString(byteArray);
            //string result = Encoding.GetEncoding(936).GetString(byteArray);
            string result = pEncoding.GetString(byteArray);
            return result;
        }

        /// <summary>
        /// 字符数组转换为字符串[仅适用于字符数据长度为16的字符数组对象]
        /// </summary>
        /// <param name="charValue">字符数组</param>
        /// <param name="formatStyle">字符串格式[不区分大小写] IP1:IP地址的第一部分;IP2:IP地址第二部分;IP3:IP地址的第三部分;IP4:IP地址的第四部分</param>
        /// <returns>字符串</returns>
        public static string ByteArrayToString(byte[] byteArray, string formatStyle)
        {
            //string result = Encoding.GetEncoding("gb2312").GetString(byteArray);
            //string result = Encoding.GetEncoding(936).GetString(byteArray);
            string result = pEncoding.GetString(byteArray);
            if (result.Length == 16)
            {
                string sPart1 = result.Substring(0, 4);
                string sPart2 = result.Substring(4, 4);
                string sPart3 = result.Substring(8, 4);
                string sPart4 = result.Substring(12, 4);
                string strTemp = formatStyle.ToUpper();
                //IP地址格式处理
                if (strTemp.IndexOf("IP1") != -1)
                {
                    strTemp = strTemp.Replace("IP1", int.Parse(sPart1).ToString());
                }
                if (strTemp.IndexOf("IP2") != -1)
                {
                    strTemp = strTemp.Replace("IP2", int.Parse(sPart2).ToString());
                }
                if (strTemp.IndexOf("IP3") != -1)
                {
                    strTemp = strTemp.Replace("IP3", int.Parse(sPart3).ToString());
                }
                if (strTemp.IndexOf("IP4") != -1)
                {
                    strTemp = strTemp.Replace("IP4", int.Parse(sPart4).ToString());
                }
                result = strTemp;
            }
            return result;
        }


        /// <summary>
        /// 字符串转换为字符数组
        /// </summary>
        /// <param name="strValue"></param>
        /// <returns></returns>
        public static bool StringToByteArry(string strValue, ref byte[] byteArry)
        {
            try
            {
                //byte[] byteTemp = Encoding.GetEncoding("gb2312").GetBytes(strValue);
                byte[] byteTemp = pEncoding.GetBytes(strValue);
                int maxLen = (byteTemp.Length > byteArry.Length ? byteArry.Length : byteTemp.Length);
                for (int i = 0; i < byteArry.Length; i++)
                {
                    if (i < maxLen)
                    {
                        byteArry[i] = byteTemp[i];
                    }
                    else
                    {
                        byteArry[i] = new byte();
                    }
                }
                return true;
            }
            catch
            {
                return false;
            }
        }

抱歉!评论已关闭.