sp #f在C#?

Mar*_*son 20 c# string printf

sprintf()C#中有类似的东西吗?

我想比如将整数转换为2字节的字节数组.

就像是:

int number = 17;
byte[] s = sprintf("%2c", number);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 27

string s = string.Format("{0:00}", number)
Run Code Online (Sandbox Code Playgroud)

第一个0表示"第一个参数"(即数字); 冒号后面的00是格式说明符(2位数字).

但请注意,.NET字符串是UTF-16,因此2个字符的字符串是4个字节,而不是2个字节

(编辑:问题从改变stringbyte[])

要获取字节,请使用Encoding:

byte[] raw = Encoding.UTF8.GetBytes(s);
Run Code Online (Sandbox Code Playgroud)

(显然不同的编码可能会给出不同的结果; UTF8会为这些数据提供2个字节)

实际上,第一位的较短版本是:

string s = number.ToString("00");
Run Code Online (Sandbox Code Playgroud)

string.Format版本更灵活.


Mar*_*son 3

事实证明,我真正想要的是这样的:

short number = 17;
System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);
writer.Write(number);
writer.Flush();
Run Code Online (Sandbox Code Playgroud)

这里的关键是 BinaryWriter 类的 Write 函数。它有 18 个重载,将不同的格式转换为写入流的字节数组。就我而言,我必须确保要写入的数字保存在短数据类型中,这将使 Write 函数写入 2 个字节。