在0之前的整数值

时间:2014-04-06 13:30:14

标签: c#

我正在使用此问题的答案,以查看我的二进制值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?感谢。

3 个答案:

答案 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