Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sprintf in C#?

Tags:

Is there something similar to sprintf() in C#?

I would for instance like to convert an integer to a 2-byte byte-array.

Something like:

int number = 17; byte[] s = sprintf("%2c", number); 
like image 573
Markus Johansson Avatar asked Nov 23 '08 21:11

Markus Johansson


People also ask

What does sprintf do in C?

sprintf() in C sprintf stands for "string print". In C programming language, it is a file handling function that is used to send formatted output to the string. Instead of printing on console, sprintf() function stores the output on char buffer that is specified in sprintf.

What is the difference between sprintf and printf?

The only difference between sprintf() and printf() is that sprintf() writes data into a character array, while printf() writes data to stdout, the standard output device.

What library is sprintf in?

The C library function int sprintf(char *str, const char *format, ...) sends formatted output to a string pointed to, by str.


1 Answers

string s = string.Format("{0:00}", number) 

The first 0 means "the first argument" (i.e. number); the 00 after the colon is the format specifier (2 numeric digits).

However, note that .NET strings are UTF-16, so a 2-character string is 4 bytes, not 2

(edit: question changed from string to byte[])

To get the bytes, use Encoding:

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

(obviously different encodings may give different results; UTF8 will give 2 bytes for this data)

Actually, a shorter version of the first bit is:

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

But the string.Format version is more flexible.

like image 130
Marc Gravell Avatar answered Nov 25 '22 08:11

Marc Gravell