У меня есть текстовое поле, которое я использую для преобразования таких вещей, как:
74 00 65 00 73 00 74 00
Снова в строку, выше говорит «тест», но по какой-то причине, когда я нажимаю кнопку конвертировать, он будет отображать толькопервая буква "t" 74 00
и другие байтовые массивы работают так же, как и ожидалось, весь текст преобразуется.
Вот 2 кода, которые я пробовал, которые приводят к тому же самому поведению при неправильном преобразовании всего байтового массивак слову:
byte[] bArray = ByteStrToByteArray(iSequence.Text);
ASCIIEncoding enc = new ASCIIEncoding();
string word = enc.GetString(bArray);
iResult.Text = word + Environment.NewLine;
, который использует функцию:
private byte[] ByteStrToByteArray(string byteString)
{
byteString = byteString.Replace(" ", string.Empty);
byte[] buffer = new byte[byteString.Length / 2];
for (int i = 0; i < byteString.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(byteString.Substring(i, 2), 16);
return buffer;
}
другой способ, который я использовал, это:
string str = iSequence.Text.Replace(" ", "");
byte[] bArray = Enumerable.Range(0, str.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(str.Substring(x, 2), 16))
.ToArray();
ASCIIEncoding enc = new ASCIIEncoding();
string word = enc.GetString(bArray);
iResult.Text = word + Environment.NewLine;
Попытка проверки длины, чтобы увидетьесли он проходил итерацию, и это было ...
Не знаю, как отладить, почему это происходит с вышеуказанным байтовым массивом, но все остальные байтовые массивы, кажется, работали просто отлично, только этотвыводя только первую букву.
Я сделал что-то не так, что может как-то вызвать такое поведение?Что я могу попробовать, чтобы выяснить, что не так?