C# 整数值中前面的0
我使用这个问题的答案是为了查看二进制值中的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?
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,代码也应该仍然可以工作。您是否愿意至少注释一下,这样我就可以看出我可能错在哪里了?