sprintf в C#?

Вы можете определить переменную в одном из классов и затем изменить ее следующим образом:

var saisie: String?

Затем в IBAction:

saisie = chauffeur_nom.text
20
задан Markus Johansson 23 November 2008 в 21:56
поделиться

3 ответа

Это сложилось, который, что я действительно хотел, был этим:

short number = 17;
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
writer.Write(number);
writer.Flush();

ключ здесь является функцией Записи класса BinaryWriter. Это имеет 18 перегрузок, преобразовывая различные форматы в массив байтов, который это пишет в поток. В моем случае я должен удостовериться число, которое я хочу записать, сохранен в коротком типе данных, это заставит функцию Записи записать 2 байта.

2
ответ дан 30 November 2019 в 00:23
поделиться

РЕДАКТИРОВАНИЕ: я предполагаю, что Вы хотите преобразовать значение целого числа к массиву байтов а не значение, преобразованное в строку сначала, и затем в массив байтов (проверьте ответ marc на последнего.)

Для преобразования интервала в массив байтов можно использовать:

byte[] array = BitConverter.GetBytes(17);

, но это даст Вам массив 4 байтов а не 2 (так как интервал составляет 32 бита.) Для получения массива 2 байтов, необходимо использовать:

byte[] array = BitConverter.GetBytes((short)17);

, Если Вы просто хотите преобразовать значение 17 в два символа затем, используйте:

string result = string.Format("{0:00}", 17);

, Но поскольку marc указал, что результат использует 4 байта, так как каждый символ в.NET составляет 2 байта (UTF-16) (включая два байта, которые содержат длину строки, это будут 6 байтов).

4
ответ дан 30 November 2019 в 00:23
поделиться
string s = string.Format("{0:00}", number)

первый 0 означает "первый аргумент" (т.е. число); 00 после двоеточия являются спецификатором формата (2 числовых цифры).

Однако примечание, что строки.NET являются UTF-16, таким образом, 2 символьных строки составляют 4 байта, не 2

(редактирование: вопрос, измененный от string до byte[])

Для получения байтов, используйте Encoding:

byte[] raw = Encoding.UTF8.GetBytes(s);

(очевидно различная кодировка может дать различные результаты; UTF8 даст 2 байта для этих данных)

На самом деле, более короткая версия первого бита:

string s = number.ToString("00");

, Но string.Format версия более гибка.

27
ответ дан 30 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: