我有一个数据string data2 = " %04%02%BC%94%BA%15%E3%AA%08%00%7F%00";
,我试图将%
符号之间的每两位数字分开并将其放入一个数组中。
除此之外,如果有多余的数字,即多于 2 位,则转换为十六进制并将其添加到数组中。
我的代码有时可以工作,但是当我在倒数第二个位置添加额外的数字时,它会给出错误的值。
string data = " %04F%02%BC%94%BA%15%E3%AA%08%00%7FF%00";
List<string> Values = new List<string>();
string[] val = Regex.Split(data2, "%");
byte[] TempByte = new byte[val.Length - 1];
for (int i = 0; i < val.Length; i++)
{
Values.Add(val[i]);
if (Values[i].Length > 2)
{
//count
int count = 0;
int n = 2; //start from digit 2(if ther is any)
foreach (char s in Values[i])
{
count++;
}
int index = count - 2; //index starting at 2
while (n <= Values[i].Length -1)
{
string temp = string.Join(string.Empty, Values[i].Substring(n, 1).Select(c =>
((int)c).ToString("X")).ToArray());
Values.Add(temp);
n = n + 1;
}
//remove the extra digit
Values[i] = Values[i].Replace(Values[i].Substring(2, 1), string.Empty);
}
}
Values.RemoveAt(0); //since digit 0 is always zero
string[] TagTemp = Values.ToArray();
//Convert to array
for (int i = 0; i < val.Length - 1; i++)
{
TempByte[i] = Convert.ToByte(TagTemp[i], 16);
}
当额外的数字被添加到第一个位置时,即04F
,输出是正确的:
当它被添加到倒数第二个位置时,即7FF
代替7F 46
它只给出7
.
你们看到什么是错的以及如何解决它?