sprintf in C#?

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

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.


EDIT: I'm assuming that you want to convert the value of an integer to a byte array and not the value converted to a string first and then to a byte array (check marc's answer for the latter.)

To convert an int to a byte array you can use:

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

but that will give you an array of 4 bytes and not 2 (since an int is 32 bits.) To get an array of 2 bytes you should use:

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

If you just want to convert the value 17 to two characters then use:

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

But as marc pointed out the result will consume 4 bytes since each character in .NET is 2 bytes (UTF-16) (including the two bytes that hold the string length it will be 6 bytes).


It turned out, that what I really wanted was this:

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

The key here is the Write-function of the BinaryWriter class. It has 18 overloads, converting different formats to a byte array which it writes to the stream. In my case I have to make sure the number I want to write is kept in a short datatype, this will make the Write function write 2 bytes.


Need Your Help

Display Headers in Infragistics ULTRAGRID when no data in table

vb.net sql-server-2005 header infragistics ultragrid

I am fetching data in from an SQL table using a DataSet in VB.Net. When there is data in table, it displays the data properly in the grid, but when there is no data in the table, it only shows the

Create a local-only port to communicate between processes on the same computer?

macos unix network-programming ipc

I have two processes that are run by the same user, but neither is related to the other (in the parent/child sense). The server creates a socket, and the client opens a connection using its port nu...