#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. Спасибо, сработало блестяще, спасибо всем остальным, кто также ответил! 🙂