string 和 byte[] 互转换工具

来源:互联网 发布:淘宝店长工作职责 编辑:程序博客网 时间:2024/04/29 15:34

string 和 byte[] 互转换工具


    /// <summary>    /// string 和 byte[] 互转换工具    /// </summary>    public sealed class StringConvert    {        /// <summary>        /// 字符串转换为byte数组        /// </summary>        /// <param name="inputString">传入字符串参数</param>        /// <returns>byte[]</returns>        public static byte[] StringConvertToBytes(string inputString)        {            return System.Convert.FromBase64String(inputString);        }        /// <summary>        /// byte数组转换为字符串        /// </summary>        /// <param name="inputBytes">传入byte数组参数</param>        /// <returns>string</returns>        public static string BytesConvertToString(byte[] inputBytes)        {            return System.Convert.ToBase64String(inputBytes);        }        /// <summary>        /// 16进制字符串转16进制字节        /// </summary>        /// <param name="hexString">16进制字符数据</param>        /// <returns>字节数据</returns>        public static byte[] HexStrToByte(string hexString)        {            hexString = hexString.Replace(" ", "");            if ((hexString.Length % 2) != 0)            {                hexString += " ";            }            byte[] returnBytes = new byte[hexString.Length / 2];            for (int i = 0; i < returnBytes.Length; i++)            {                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);            }            return returnBytes;        }        /// <summary>        /// 16进制字节转16进制字符串        /// </summary>        /// <param name="bytes">数据</param>        /// <returns>16进制字符串</returns>        public static string ByteToHexStr(byte[] bytes)        {            string returnStr = "";            if (bytes != null)            {                for (int i = 0; i < bytes.Length; i++)                {                    returnStr += bytes[i].ToString("X2");                }            }            return returnStr;        }        /// <summary>        /// 数字或16进制字符串转BCD编码        /// </summary>        /// <param name="strTemp">数据</param>        /// <returns>BCD编码后的数据</returns>        public static Byte[] ConvertFrom(string strTemp)        {            try            {                if (Convert.ToBoolean(strTemp.Length & 1))//数字的二进制码最后1位是1则为奇数                {                    strTemp = "0" + strTemp;//数位为奇数时前面补0                }                Byte[] aryTemp = new Byte[strTemp.Length / 2];                for (int i = 0; i < (strTemp.Length / 2); i++)                {                    char high = (char)Convert.ToByte(strTemp.Substring(i * 2, 1), 16);                    char low = (char)Convert.ToByte(strTemp.Substring(i * 2 + 1, 1), 16);                    aryTemp[i] = (Byte)((high << 4) | low);                }                return aryTemp;//高位在前            }            catch            {                return null;            }        }        /// <summary>        /// BCD码转换16进制(压缩BCD)        /// </summary>        /// <param name="strTemp">数据</param>        /// <param name="len">数据长度</param>        /// <returns>BCD压缩后的数据</returns>        public static Byte[] ConvertFrom(string strTemp, int len)        {            try            {                Byte[] Temp = ConvertFrom(strTemp.Trim());                Byte[] return_Byte = new Byte[len];                if (len != 0)                {                    if (Temp.Length < len)                    {                        for (int i = 0; i < len - Temp.Length; i++)                        {                            return_Byte[i] = 0x00;                        }                    }                    Array.Copy(Temp, 0, return_Byte, len - Temp.Length, Temp.Length);                    return return_Byte;                }                else                {                    return Temp;                }            }            catch            {                return null;            }        }        /// <summary>        /// 16进制转换BCD(解压BCD)        /// </summary>        /// <param name="aData">数据</param>        /// <returns>BCD解压后数据</returns>        public static string ConvertTo(byte[] aData)        {            try            {                StringBuilder sb = new StringBuilder(aData.Length * 2);                foreach (Byte b in aData)                {                    sb.Append(Convert.ToString(b >> 4, 16));                    sb.Append(Convert.ToString(b & 0x0f, 16));                }                return sb.ToString();            }            catch            {                return null;            }        }    }




原创粉丝点击