Кодировка строки utf-8, я знаю как это кодировка работает, и какие методы C# могут с ней работать.
У меня есть массив байтов, и вот в чем дело, сами эти байты, это просто инструкции, типо запушить в стак, сложить два элемента в стаке, и тд, и тп. Но как мне запушить строку? Знаю что в стак конечно пушиться ссылка на строку, а не сама строка, но это за меня делает c# . И вот вопрос, а как определить что строка кончилась? Использовать для этого определённый набор байтов или символ(в принципе тоже самое что и байты) и определять это как конец строки? Или вначале объявлять длинну строки? Тогда это тоже проблема так что бы запушить одну английскую "a" уйдёт 6 байтов = 1 на команду пуша строки, 4 на размер, и 1 байт сама строка, знаю выглядит нелепо что я за каждый байт цепляюсь, но мне просто интересно, как нужно правильно это делать.
Что-то я не понимаю чего вы хотите добиться. То что вы говорить - низкоуровневое программирование, для этого вам не нужен C#. Берите C/C++ и наслаждайтесь прямой работой с памятью.
Вообще со строками есть два подхода. Первый использовал Pascal: в нулевом байте строки хранится её длина. Так как паскаль использовал однобайтную кодировку (ANSI), то этого было достаточно для хранения строк длиной до 255 байт. Вы, в принципе, можете использовать и 2 и 4 байта. И это неплохо работало.
Второй подход - это подход из C++, когда строка заканчивается символом '\0' (zero-terminated string). Тут тоже есть свои тонкости, в основном связанные с тем, что при определении длины строки нужно помнить что '\0' не входит в её длину. Еще есть потенциальная ошибка, связанная с выходом за пределы строки и повреждением следующих за ней блоков памяти.
Для того чтобы хранить строки в байте вам в помощь может придти MemoryStream:
byte[] data = new byte[255];
MemoryStream memory = new MemoryStream(data);
StreamWriter writer = new StreamWriter(memory);
StreamReader reader = new StreamReader(memory);
С помощью writer и reader можете сделать ввод/ввывод строк!
Вы вопрос читали? Я умею работать с подобными классами..... там в другом беда была, вопрос был как определить строку, и мне уже дали ответ, в любом случае спасибо.