Преобразование байтов в строки не выполняется в C#

У меня есть аппаратная часть, которая отправляет данные через Bluetooth. Я пытаюсь их прочитать, но информация не соответствует исходным данным.

Я использую ReadByte для получения данных, которые отправляются по одному.

int i1 = 0;
byte[] datum = new byte[6144];

while (i1 < 6144)
{
   datum[i1] = await Task.Run(() => (byte)InmStream.ReadByte());
   i1++;
}


string string_ascii = (System.Text.Encoding.ASCII.GetString(datum));
string string_bit = BitConverter.ToString(datum);
string string_base64 = Convert.ToBase64String(datum);

Результаты:

Если я отображаю элементы из созданных строк, я получаю:

string_ascii[0] и [3] = 3 и 3 ([1] и [2] являются \r & \n)

string_bit [0] и [3] = 3 и 0 ([1] и [2] равны \r & \n)

string_base64 [0] и [3] = M и K ([1] и [2] являются \r & \n)

Должно быть всегда: 3 и 35 (формат данных, отправляемых с аппаратного обеспечения: целое число \ r \ n)

Очевидно, что если я попытаюсь преобразовать одни и те же элементы в целые числа, результаты не будут такими, как мне нужно.

ascii[i] = (int)Char.GetNumericValue(string_ascii[i]);
bit[i] = (int)Char.GetNumericValue(string_bit[i]);
base64[i] = (int)Char.GetNumericValue(string_base64[i]);

Я получил:

ascii [0] и [3] = 3 и 3

бит [0] и [3] = 3 и 0

base64 [0] и [3] = -1 и -1

PS. Я заметил, что когда есть 1-значные целые числа, код работает нормально.

Как это исправить? Заранее спасибо.

0 ответов

Другие вопросы по тегам