totalSeasons
- это больше, чем один байт, поэтому вы бы вызвали метод Write , который записывает целый блок байтов.байт?Возможно, вы ищете Byte.TryParse
вместо Encoding.GetBytes
.
РЕДАКТИРОВАТЬ: Предоставить полное сообщение об ошибке, а не только номер.Кроме того, что именно находится в текстовом поле.Вы, кажется, запутались насчет шестнадцатеричной, десятичной, двоичной и ASCII.Это разные строковые представления числа.
0xCD
не является шестнадцатеричным значением.Это C # -конформное шестнадцатеричное представление числа.(Другое шестнадцатеричное представление, не допускаемое C #, это CDh).Компилятор превращает его в число во внутреннем формате .NET (которое бывает двоичным, но это не важно).Затем вызов WriteByte
или Write
сохраняет номер в файле в двоичном виде.Вы получите тот же результат от stream.WriteByte(0xCD)
, stream.WriteByte(206)
или stream.WriteByte(0316)
, так как компилятор преобразует их все в одно и то же внутреннее представление.Если вы хотите записать переменную, тогда вообще нет необходимости использовать hex, вам нужно внутреннее представление, которого ожидает WriteByte
.
Вы сказали, что пользователь вводит число от 0 до 255 в десятичном виде?Затем требуется преобразование из десятичного строкового представления во внутреннее представление, это называется «синтаксическим анализом».
Попробуйте этот код:
stream.WriteByte(Byte.Parse(txtTotalSeasons.Text));