刚开始没编码,使用encodeURIComponent
进行了编码,但是后台解码+会被解析为空格,最后使用hex解决
public class HexConverter
{/// <summary>/// 转换十六进制字符串到字节数组/// </summary>/// <param name="msg">待转换字符串</param>/// <returns>字节数组</returns>public static byte[] HexToByte(string msg){msg = msg.Replace(" ", "");//移除空格//create a byte array the length of the//divided by 2 (Hex is 2 characters in length)byte[] comBuffer = new byte[msg.Length / 2];for (int i = 0; i < msg.Length; i += 2){//convert each set of 2 characters to a byte and add to the arraycomBuffer[i / 2] = (byte)Convert.ToByte(msg.Substring(i, 2), 16);}return comBuffer;}/// <summary>/// 转换字节数组到十六进制字符串/// </summary>/// <param name="comByte">待转换字节数组</param>/// <returns>十六进制字符串</returns>public static string ByteToHex(byte[] comByte,bool isNeedSpace=false){StringBuilder builder = new StringBuilder(comByte.Length * 3);foreach (byte data in comByte){builder.Append(Convert.ToString(data, 16).PadLeft(2, '0').PadRight(3, ' '));}var res = builder.ToString().ToUpper();if (isNeedSpace){return res;}return res.Replace(" ", "");}static string ByteToString(byte[] InBytes) {string StringOut="";StringOut = System.Text.Encoding.ASCII.GetString(InBytes);return StringOut; }static byte[] StringToByte(string InString) {string[] ByteStrings;ByteStrings = InString.Split(" ".ToCharArray());byte[] ByteOut;ByteOut = new byte[ByteStrings.Length-1];for (int i = 0;i==ByteStrings.Length-1;i++) {ByteOut[i] = Convert.ToByte(("0x" + ByteStrings[i]));} return ByteOut;}
}