unity中想发送16进制给串口 这是16进制的内容: 01 03 00 00 00 01 84 0A
下面都是把十六进制字符串转换成字节型
public static sbyte[] StringToByte(string InString)
{
string[] ByteStrings;
ByteStrings = InString.Split(" ".ToCharArray());
sbyte[] ByteOut;
ByteOut = new sbyte[ByteStrings.Length];
for (int i = 0; i <= ByteStrings.Length - 1; i++)
{
//ByteOut[i] = System.Text.Encoding.ASCII.GetBytes(ByteStrings[i]);
ByteOut[i] = SByte.Parse(ByteStrings[i], System.Globalization.NumberStyles.HexNumber);
//ByteOut[i] =Convert.ToByte("0x" + ByteStrings[i]);
}
return ByteOut;
}
private sbyte[] StrToHex(string strText)
{
strText = strText.Replace(" ", "");
sbyte[] bText = new sbyte[strText.Length / 2];
for (int i = 0; i < strText.Length / 2; i++)
{
int temp= Convert.ToSByte(strText.Substring(i * 2, 2), 16);
bText[i] = (sbyte)temp;
print(bText[i]);
// var temp= Byte.Parse(strText.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);
//bText[i] = temp;
}
return bText;
}
但是不管那种方法,串口收到的都是01 03 00 00 00 01 04 0A
本来的84都会变成04 。再比如{ 63, 69, 72, 20, 32, 32, 0D, 0A };发这个得到的也永远是23 29 32 20 32 32 0D 0A
求看看原因在哪里??