데이터가 있습니다 string data2 = " %04%02%BC%94%BA%15%E3%AA%08%00%7F%00";
%
기호 사이에 두 자리를 나누어 배열에 넣으려고합니다.문자열 조작 및 분할
그 외에도 2 자리 이상의 추가 숫자가있는 경우 16 진수로 변환하여 배열에 추가하십시오.
때때로 코드가 작동하지만 두 번째 마지막 자리에 추가 숫자를 추가하면 잘못된 값이 표시됩니다. 추가 번호가 제 1 위치에 추가
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
출력이 올바른지 :
즉 대신 7F 46
의 7FF
는 단지 준다 7
.
출력이 정확합니까? 여분의 16 진수를 어떻게 처리 할 것인가에 따라'0x04' 또는'0x4F'에서'46'을 어떻게 얻습니까? –
@RogerLipscombe - '04F'는'04 46'으로 번역됩니다. 'F'는 16 진수 – Liban
으로 변환되며 어떻게 "정확합니까?" '0x04F'는'79'입니다. '0x04'는'4'입니다. '0x4F'는 여전히'79'입니다. '0x04F'에서'04 46'을 어떻게 얻습니까? 내가 익숙한 어떤 번호 체계에서도 이런 일은 일어나지 않는다 ... –