C # – incrementa il numero e tieni gli zeri in primo piano

Devo fare una variabile contatore di 40 cifre. Dovrebbe iniziare come 0000000000000000000000000000000000000001
e incrementare a
0000000000000000000000000000000000000002

Quando uso la class int , taglia tutti gli zeri. Il problema è che ho bisogno di incrementare il numero e poi convertirlo in una stringa, con il numero corretto di zeri iniziali. La dimensione totale dovrebbe essere di 40 cifre. Quindi se colpisco 50 per esempio, dovrebbe assomigliare a questo:

0000000000000000000000000000000000000050

Come posso farlo e mantenere gli zeri?

Usa il numero intero e formatta o tampona il risultato quando converti in una stringa. Ad esempio

 int i = 1; string s = i.ToString().PadLeft(40, '0'); 

Vedi la risposta di Jeppe Stig Nielson per un’opzione di formattazione che non riesco nemmeno a ricordare.

Prova a usare

 int myNumber = ...; string output = myNumber.ToString("D40"); 

Ovviamente, l’ int non può mai diventare così grande da riempire tutti quei posti in cifre (il più grande con solo 10 cifre).

Basta convertire la stringa in int, eseguire l’aggiunta o qualsiasi altra operazione, quindi riconvertire in stringa con un numero adeguato di 0 iniziali:

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

Ho dovuto fare qualcosa di simile l’altro giorno, ma avevo solo bisogno di due zeri. Ho finito con

 string str = String.Format("{0:00}", myInt); 

Non sono sicuro se è infallibile, ma prova

 String.Format("{0:0000000000000000000000000000000000000000}", myInt)