Member 14179902 Ответов: 1

C#: buffer.blockcopy возвращает null


Я хочу разделить массив байтов на несколько массивов байтов.например,рассмотрим от байтов 0 до 20 в качестве сообщений, а затем от байтов 21 до 129 в качестве ключа.Размер этих массивов берется из текстового поля.затем значения преобразуются в INT32. с помощью друга Я использовал буфер.BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count)для этой цели.
Но это работает только тогда, когда я ставлю числовое значение для int count или int source Offset.Когда я использую textbox input возвращает null.Кто-нибудь знает, где я допустил ошибку в приведенном ниже коде?Я был бы признателен вам за помощь.
//define byte arrays
byte[] sourceArray = new byte[512];
byte[] msgArray1 = new byte[512];
byte[] keyArray2 = new byte[512];

// take byte count from text box
string msgTextBox = msgByteCountTextBox.Text;
int msgCount = Int32.Parse(msgTextBox);

string keyTextBox = keyCountTextBox.Text;
int keyCount = Int32.Parse(keyTextBox);
int endOfFile = 5;

System.Buffer.BlockCopy(sourceArray, 0, msgArray1, 0, msgCount)
msgCount += endOfFile;
System.Buffer.BlockCopy(sourceArray, msgCount, keyArray2, 0, keyCount)

string msg = Encoding.ASCII.GetString(msgArray1, 0, msgArray1.Length);
Console.WriteLine(msg);


Что я уже пробовал:

Я попробовал Array.CopyTo и Convert.Int32 и Int32.TryParse но все равно возвращает null

1 Ответов

Рейтинг:
2

Gerry Schmitz

Остановитесь и проверьте результаты msgTextBox и keyTextBox.

Тот факт, что "это" работает, когда вы "вводите цифры", должен сказать вам, что проблема заключается в вашей логике "текстового поля"... и так как мы не можем видеть, что вы входите ...

А почему именно 2 версии "Парса"? Является ли одно текстовое поле "лучше", чем другое?


Member 14179902

спасибо за ваш ответ. входные данные текстового поля являются числовыми.