将string转换为int而不丢失开头的零

本文关键字:开头 string 转换 int | 更新日期: 2023-09-27 18:01:34

我尝试了int.parse,和convert class将字符串转换为int.

当我转换。我漏掉了开头的0,这是我不想要的

示例:09999变成9999 -我不想要这个

我想保持它原来的样子。

我该怎么做呢?

将string转换为int而不丢失开头的零

myNumber.ToString("D5");

//D表示'Decimal',而5是您希望该数字始终保持的指定位数。这将用0填充你的值,直到它达到5位。

不能。int表示一个数学整数。数字099999999在数学上是完全相同的数字。

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

如果你想做一些事情,比如总是以5个位置打印你的数字,它就像

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

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

只有当你将它转换回字符串时,你才能得到"9999",该字符串中前导零的存在与否由转换回字符串控制。

// 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);

你不能。如果您希望它保持这种方式,则必须将值保持为字符串。

整型值不能有前导零

如果您只是转换为int来测试值,请保留原始数据,并在需要前导零点时使用它的字符串值。如果您需要在数学上对整数进行处理后将其填充为零,则必须在输出时使用sprintf或类似的格式。

不能,但是如果你需要将其强制转换为int并保留0,你可以创建它的副本,然后将其强制转换为int,那么你将有两个版本的它,一个是int,一个是string。

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

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

我也有同样的问题;用if else来解