c # считывается двумя байтами из строки

#c# #file #byte

#c# #файл #байт

Вопрос:

привет,

Я считываю файл в формате hex и сохраняю его в виде строки, что мне нужно сделать, это затем прочитать по два символа за раз, так что допустим, у меня есть строка, которая содержит

313233343536373839

Мне нужно было бы прочитать 31, за которым следует 32, за которыми следует 33

Я новичок в C # и программировании в целом, в моей книге ничего об этом нет, и я не могу найти пример, который хорошо объясняет это для меня, если бы вы могли посоветовать мне, я был бы благодарен!

Комментарии:

1. Звучит как задание для программирования. Вы говорите, что вы новичок в программировании в целом … нужно ли нам углубляться в структуры циклов или достаточно просто дать вам общую идею?

Ответ №1:

Если вы хотите преобразовать это шестнадцатеричное строковое представление в массив байтов, вы могли бы использовать следующее:

 string str = "313233343536373839";
byte[] buffer = Enumerable
    .Range(0, str.Length)
    .Where(x => x % 2 == 0)
    .Select(x => Convert.ToByte(str.Substring(x, 2), 16))
    .ToArray();
  

Комментарии:

1. Спасибо за использование Linq. Как бы это ни было круто, я предполагаю, что для кого-то столь же нового в таких вещах, как он, вероятно, было бы более полезно изучить некоторые из более простых способов сделать это, а не погружаться сразу в Linq… Но, тем не менее, все равно круто.

2. Не уверен, хочу ли я видеть это в своей кодовой базе.

Ответ №2:

 string myString = "313233343536373839";

for (int i=0; i<myString.Length; i =2)
{
    string myChars = myString.Substring(i, 2);
    // do something with myChars here ...
}
  

Был в середине публикации этого, когда Дарин опубликовал. Не думал о том, чтобы сделать это таким образом. Отличная работа, Дарин!

Комментарии:

1. Спасибо, сработало блестяще, спасибо всем остальным, кто также ответил! 🙂