在开发一些通过串口和外部设备通讯的程序中,需要用到大量的各种字符串、byte数组等之间互相转换的问题,总结了一些小函数,可能有速度更快的方法,希望大家能帮我改正 (C#)
       // 把十六进制字符串转换成字节型和把字节型转换成十六进制字符串 converter hex string to byte and byte to hex string
        public static string ByteToString(byte[] InBytes)
        {
            string StringOut = "";
            foreach (byte InByte in InBytes)
            {
                StringOut += String.Format("{0:X2}", InByte);
            }
            return StringOut;
        }

        public static string ByteToString(byte[] InBytes,string Param) ///为了显示方便可能需要在每个字节后面补上一个空格等)
        {
            string StringOut = "";
            foreach (byte InByte in InBytes)
            {
                StringOut = StringOut + String.Format("{0:X2}", InByte) + Param ;
            }
            StringOut = StringOut.Substring(0, StringOut.Length - Param.Length);
            return StringOut;
        }


        public static string ByteToString(byte iIn)
        {
            string sTmp = "";
            //   sTmp = Supply00( iIn.ToString("X") , 0, "0", 2);
            sTmp = sTmp + String.Format("{0:X2}", iIn);
            return sTmp;
        }
        public static string StrToHexAsc(string inString)
        {
            char[] inStringToChar = inString.ToCharArray();
            string outString = "";
            for (int i = 0; i < inStringToChar.Length; i++)
            {
                outString += String.Format("{0:X2}", Convert.ToByte(inStringToChar[i]));           
            }
            return outString;
        }


        public static byte[] StringToByte(string InString,string Param)
        {
            string[] ByteStrings;
            ByteStrings = InString.Split(Param.ToCharArray());

            byte[] ByteOut;
            ByteOut = new byte[ByteStrings.Length];
            for (int i = 0; i <= ByteStrings.Length - 1; i++)
            {
                ByteOut[i] = Convert.ToByte(ByteStrings[i], 16);
            }

            return ByteOut;
        }

        public static byte[] StringToByte(string InString)
        {
            string[] ByteStrings;
            ByteStrings = new string[InString.Length / 2];
            for (int i = 0; i < ByteStrings.Length; i++)
            {
                ByteStrings[i] = InString.Substring(i * 2, 2);
            }

            byte[] ByteOut;
            ByteOut = new byte[ByteStrings.Length];
            for (int i = 0; i <= ByteStrings.Length - 1; i++)
            {
                ByteOut[i] = Convert.ToByte(ByteStrings[i], 16);
            }

            return ByteOut;
        }

 

        //补00函数
        public static string Supply00(string sOldStr, int SupplyWay, string SupplyChar, long SupplyNum)
        {
            int i;
            string sTmp;

            sTmp = "";
            for (i = sOldStr.Length; i < SupplyNum ; i++)
                sTmp = sTmp + SupplyChar;
            switch (SupplyWay)
            {
                case 0: //前补充
                    sTmp = sTmp + sOldStr;
                    break;
                case 1: //后补充
                    sTmp = sOldStr + sTmp;
                    break;
                default:
                    sTmp = sOldStr;
                    break;
            }
            return sTmp;
        }


        public static string HexAscToStr(string inString)
        {

            byte[] CardData;
            CardData = StringToByte(inString);

            string outString = Encoding.ASCII.GetString(CardData);
            return outString;
        }