I need to make a 40 digit counter variable. It should begin as 0000000000000000000000000000000000000001
and increment to 0000000000000000000000000000000000000002
When I use the int
class, it cuts off all the zeros. Problem is I need to increment the number and then convert it to a string, with the correct number of leading zeros. The total size should be 40 digits. So if I hit 50 for example, it should look like this:
0000000000000000000000000000000000000050
How can I do that and retain the zeros?
Use the integer and format or pad the result when you convert to a string. Such as
int i = 1;
string s = i.ToString().PadLeft(40, '0');
See Jeppe Stig Nielson's answer for a formatting option that I can also never remember.
Try using
int myNumber = ...;
string output = myNumber.ToString("D40");
Of course, the int
can never grow so huge as to fill out all those digit places (the greatest int
having only 10 digits).
Just convert your string to int, perform the addition or any other operations, then convert back to string with adequate number of leading 0's:
// 39 zero's + "1"
string initValue = new String('0', 39) + "1";
// convert to int and add 1
int newValue = Int32.Parse(initValue) + 1;
// convert back to string with leading zero's
string newValueString = newValue.ToString().PadLeft(40, '0');
I had to do something similar the other day, but I only needed two zeros. I ended up with
string str = String.Format("{0:00}", myInt);
Not sure if it's fool proof but try
String.Format("{0:0000000000000000000000000000000000000000}", myInt)
来源:https://stackoverflow.com/questions/10935020/c-sharp-increment-number-and-keep-zeros-in-front