Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 整数值中前面的0_C# - Fatal编程技术网

C# 整数值中前面的0

C# 整数值中前面的0,c#,C#,我使用这个问题的答案是为了查看二进制值中的0 我将其转换为字符串,并使用: string b = Convert.ToString(a).PadLeft(5, '0'); 这是完美的作品,我可以打印00010而不是10。但是,我需要将其转换回整数,以便填充整数数组。我使用此函数将其转换回整数: int c = Convert.ToInt32(b); Console.WriteLine(c); 然而,当我打印此文件时,前面的0已丢失,我正在打印“10”。有没有办法将其转换回整数并保留前面的0?

我使用这个问题的答案是为了查看二进制值中的0

我将其转换为字符串,并使用:

string b = Convert.ToString(a).PadLeft(5, '0');
这是完美的作品,我可以打印00010而不是10。但是,我需要将其转换回整数,以便填充整数数组。我使用此函数将其转换回整数:

int c = Convert.ToInt32(b);
Console.WriteLine(c);

然而,当我打印此文件时,前面的0已丢失,我正在打印“10”。有没有办法将其转换回整数并保留前面的0?谢谢。

有关通过int.toString、IFormatProvider方法重载将整数格式化为字符串的信息,请参阅文档


我想冒险回答,但无论如何

整数是数字的数学表示形式,不知道前导零。没有名为00010的整数。它已经等于10

00010只是它的一个字符串表示形式。您不能将整数设置为00010

即使在代码中定义它,结果也不会有零

int i = 00010;
Console.WriteLine(i); // Prints 10
整数没有前导零。整数是数值,不携带显示信息。因此,如果将该值存储为整数,则不会存储任何显示信息。在这种情况下,在显示值时应用显示信息:

int a = 10;
Console.WriteLine(Convert.ToString(a).PadLeft(5, '0'));
如果要将显示信息保留为值本身的一部分,请将其设置为字符串:

string a = "00010";
Console.WriteLine(a);
如果需要将其存储为整数,并且您不想多次重新写入显示逻辑,则可以将该逻辑封装到一个自定义类型中,该类型将封装整数:

int c = Convert.ToInt32(b);
Console.WriteLine(c);
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);

没有名为00010的整数。等于10。00010只是它的一个字符串表示形式。您不能将整数设为00010。请您澄清一下您的问题好吗?听起来好像你在假设整数值10和整数值00010之间存在差异。有什么原因你不能将其存储为整数值10并转换为前面有0的字符串来表示吗?还有,你说它是二进制的。这是否意味着您的0010实际上代表数字2?如果是这样的话,我认为将其存储在int为10的格式中是错误的。也许还应该指出,在您链接到的问题中,MyVeryOwnByte(方便地显示,没有数据类型)实际上不是一个字节,而是一个int,分配的数字是正好由零和一组成的十进制数字,尽管问题的作者似乎将其解释为字节的位;它将只是10的数值,或者换句话说,2乘以5的结果的数值。当然,它在内部是以二进制方式存储的,但这不重要;即使是为一台假设的计算机编译的代码在内部不使用bits,代码也应该仍然可以工作。您是否愿意至少注释一下,这样我就可以看出我可能错在哪里了?