将字符串转换为int而不会在开头丢失零

我尝试了int.parse,并转换类将字符串转换为int。

我正在转换。 我在开始时输掉了0,我不想要。

例:09999变为9999 – 我不想要这个。

我想保持原样。

我怎样才能做到这一点?

你不能。 int表示数学整数。 数字099999999在数学上完全相同。

也许这里有一个不同的问题。 你为什么需要这样做? 也许有更好的方法去做你想做的事。

 myNumber.ToString("D5"); 

//D表示’十进制’,5是您希望数字始终为的指定数字位数。 这将使用零填充您的值,直到它达到5位数。

如果你想做一些事情,比如总是用5个地方打印你的号码,那就像

 myNumber.ToString().PadLeft(5, '0'); 

不, int.Parse("09999")实际上返回0x0000270F。 正好是32位(因为这是多大的int ),其中18个是前导零(准确地说,一个是符号位,你可以说只有17个前导零)。

只有当你将它转换回一个你得到“9999”的字符串时,所述字符串中前导零的存在与否都由转换回字符串控制。

你不能。 如果你希望它保持这种状态,你将不得不将值保持为字符串。

Int值不能有前导零

如果您只是转换为int来测试值,请保留原始数据并在需要主要zeor时使用它的字符串值。 如果在数学上使用整数后要求整数具有零填充,则无论何时输出它都必须使用sprintf等格式化它。

你不能,但是如果你需要将它转换为int并保留零,你可以创建它的副本然后将它转换为int,那么你将有两个版本,一个作为int,一个作为字符串。

 // For our requirement that new ID's should be of same length as old ID's. string strID = "002017"; int number = int.Parse(strID); string newID = (++number).ToString("D" + strID.Length); 

虽然这是一个旧线程,但这也可以帮助:

 // convert to big integer var bigIntBits = BigInteger.Parse(intNumber); int indexOfOne = intNumber.IndexOf('1'); string backToString = new string('0', indexOfOne) + bigIntBits.ToString();