我正在使用此问题的答案,以查看我的二进制值Byte to Binary String C# - Display all 8 digits中的0
int a = 00010
并将其转换为包含以下内容的字符串:
string b = Convert.ToString(a).PadLeft(5, '0');
这很好用,我可以打印00010而不是10.但是,我需要将它转换回整数以填充整数数组。我用它将它转换回整数:
int c = Convert.ToInt32(b);
Console.WriteLine(c);
但是,当我打印它时,前面的0都缺失了,我正在打印' 10'。有没有办法将它转换回整数并保留前面的0?感谢。
答案 0 :(得分:3)
整数没有前导零。整数是数值,它们不带有显示信息。因此,如果您将值存储为整数,那么您不会存储任何显示信息。在这种情况下,您在显示值时应用显示信息:
int a = 10;
Console.WriteLine(Convert.ToString(a).PadLeft(5, '0'));
如果您希望将显示信息保留为值本身的一部分,请将其设为字符串:
string a = "00010";
Console.WriteLine(a);
如果需要将其存储为整数并且您不想多次重写显示逻辑,则可以将该逻辑封装到包装整数的自定义类型中:
public class PaddedInteger
{
private int Value { get; set; }
private int PaddingSize { get; set; }
private char PaddingCharacter { get; set; }
public PaddedInteger(int value, int paddingSize, char paddingCharacter)
{
Value = value;
PaddingSize = paddingSize;
PaddingCharacter = paddingCharacter;
}
public override string ToString()
{
return Convert.ToString(Value).PadLeft(PaddingSize, PaddingCharacter);
}
}
然后在你的代码中:
PaddedInteger a = new PaddedInteger(10, 5, '0');
Console.WriteLine(a);
答案 1 :(得分:2)
我觉得冒风险回答但无论如何......
整数是数字的数学表示,不知道前导零。没有名为00010
的整数。它已经等于10
。
00010
只是它的字符串表示。您根本不能整数为00010
。
即使您在代码中定义它,结果也不会为零。
int i = 00010;
Console.WriteLine(i); // Prints 10
答案 2 :(得分:0)
请参阅文档,了解通过int.ToString(string,IFormatProvider)方法重载将整数格式化为字符串。
http://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx http://msdn.microsoft.com/en-us/library/0c899ak8%28v=vs.110%29.aspx