Чтобы ответить на ваш второй вопрос:
byte[] data=ASCIIEncoding.ASCII.GetBytes(textBox1.Text);
Обычно текст хранится в виде последовательности символов, каждый из которых хранится в формате Unicode, который занимает несколько байтов на символ,Формат ASCII является более старым форматом, который использует один байт (фактически, первоначально 7 битов, а затем расширен для использования 8 битов) на символ.
ASCIIEncoding обеспечивает способ преобразования в или из этого старого формата.Приведенная выше строка кода преобразует текст в представление ASCII и возвращает «сырой» массив байтов, содержащий текст в этом формате.
Обратите внимание, что ASCII использует байт для каждого символа, поэтому может представлять только 256разные символы - Unicode может представлять тысячи символов, поэтому во время преобразования некоторые символы будут потеряны (преобразованы в более простую форму, где острый / cedilla / umlaut потерян, или заменены другим символом - например, «?»)
(Типичные преимущества этого заключаются в том, что может быть проще написать код для обработки более простого формата, или что он использует меньше памяти, поскольку он использует только один байт на символ, или что вам необходимо отправить данные «третьему»сторона ", которая требует, чтобы это было ASCII)