нужно помочь преобразовать

#c# #c

#c# #c

Вопрос:

Привет, нужна помощь в преобразовании этого кода C в C#

 sprintf((char *)(dataBuffer), "Failed statistics read, device %s", device); 
  

Буфер данных равен byte[]

Я написал это, но с ошибкой преобразования строки в байт[]

   dataBuffer = string.Format("Failed statistics read, device {0}", device);
  

Комментарии:

1. Это правильный код для преобразования этого оператора. Что там насчет byte[] ? В коде C нет массива байтов.

2. @Jonathan Wood Предположение (но только предположение) заключается в том, что буфер данных равен byte[] . Частично поддерживается приведением (char *).

3. @icktoofay: Если это так, то исходный код имеет недостатки, поскольку %s используется для форматирования данных и %s предназначен для char* . Возможно, для хранения символов ASCII использовался массив байтов. Но это все равно было бы ошибочным.

Ответ №1:

 String str = string.Format("Failed statistics read, device {0}", device);
byte[] dataBuffer = System.Text.Encoding.ASCII.GetBytes(str);
// for 2-byte unicode
byte[] dataBuffer = System.Text.Encoding.Unicode.GetBytes(str);
// for UTF8 unicode
byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(str);