2016-01-21 4 views
0

Есть два вопроса:Как получить Byte [] из C#

  1. Я пытаюсь сделать программу, которая будет нужно использовать COM-компонент (OCX), созданный MFC. Предположим, что имя компонента - MyOCX. MyOCX имеет функцию «ReadUserData (BYTE * Buf)». (Я вижу, что эта спецификация функции стала ReadUserData (ref byte Buf) в C#.) Buf на самом деле BYTE [30]. Содержание строка: 100.

Вот частичный мой код:

 byte buf = new byte(); 
     if (MyOCX.ReadUserData(ref buf)) 
     { 
      for (int i = 0; i < 30; i++) 
      { 
       MyOCX.ReadUserData(ref buf); 
       textBox3.Text += (char)buf; 
      } 
     } 

Там нет какой-либо ошибки во время работы, но содержание textBox3.Text будет «111111111111111111111111111111», я думаю, это потому, что я всегда получаю «100» первую букву «1» 30 раз.

Я хотел бы спросить, как написать этот код, чтобы я мог получить «100» от оригинального BYTE [30];

  1. Другой вопрос не только имеет ReadUserData (BYTE * Buf), но также имеет WriteUserData (BYTE * Buf). Я хотел бы написать «200» обратно в Buf. Скажите, пожалуйста, как это сделать.

спасибо.

ответ

0

Не зная точно, как работает MyOXC.ReadUserData, попробуйте следующее:

byte[] buf = new byte[30]; 

if (MyOCX.ReadUserData(ref buf)) 
    for (int i = 0; i < byte.Length; i++) 
     textBox3.Text += (char)buf[i]; 

В коде это выглядит как преуспевает первое чтение, и, так как только вы предоставили один байты для записи данных только возвратили первый символ «1». Последующие вызовы, вероятно, не работают, поэтому buf никогда не изменяется, поэтому вы продолжаете печатать исходное значение.

+0

Благодарим за помощь. После использования подхода, который вы сказали, он не может быть скомпилирован. Причина: 1. ReadUserData (ref buf) имеет недопустимый параметр. 2. Параметр 1: «ref byte []» не может быть переведен на «ref byte». –

+0

попробуйте удалить ref –

+0

Спасибо за вашу помощь. к сожалению, он не может быть скомпилирован. Он показывает, что «byte []» не может быть переведен на «ref byte». –