#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);