如果你这样做:
string s = (string)70;
你希望在 s 中有什么?
A. “70”这个数字以人类阅读的方式书写。
B.“+70”前面有正数指示符的数字。
C. “F” ASCII 码 70表示的字符。
D. "\x00\x00\x00F" int 的四个字节,每个字节分别转换为它们的 ASCII 表示。
E. "\x0000F" int 分成两组,每组两个字节,每组代表一个 Unicode 字符。
F. "1000110" 70 的二进制表示。
G. "$70" 转换为货币的整数
H. 其他。
编译器无法判断,所以它会让你做很长的路要走。
有两条“长路”。第一种是使用 Convert.ToString() 重载之一,如下所示:
string s = Convert.ToString(-70, 10);
这意味着它将使用以 10 为底的表示法将数字转换为字符串。如果数字为负数,则在开头显示“-”,否则仅显示数字。但是,如果您转换为二进制、八进制或十六进制,负数将以二进制补码显示,因此 Convert.ToString(-7, 16) 变为“ffffffba”。
另一个“漫长的道路”是将 ToString 与这样的字符串格式化程序一起使用:
string s2 = 70.ToString("D");
D 是格式化程序代码,告诉 ToString 方法如何转换为字符串。下面列出了一些有趣的代码:
"D" 十进制格式,即数字 0-9,如果需要,开头带有“-”。例如 -70 变成“-70”。
“D8”我显示了 8,但可以是任何数字。与十进制相同,但它用零填充到所需的长度。例如 -70 变成“-00000070”。
"N" 插入千位分隔符,并在末尾添加 ".00"。例如 -1000 变为“-1,000.00”。
“C” 在开头的“-”之后添加一个货币符号,然后与“N”相同。例如,使用 en-Gb 文化 -1000 变为“-£1,000.00”。
“X”十六进制格式。例如 -70 变成“46”。
注意:这些格式取决于当前的文化设置,因此如果您使用 en-Us,则在使用格式代码“C”时,您将获得“$”而不是“£”。
有关格式代码的更多信息,请参阅MSDN - 标准数字格式字符串。