2012-06-07 4 views
11

Ich muss eine 40-stellige Zählervariable erstellen. Es sollte als 0000000000000000000000000000000000000001
und Zuwachs an
0000000000000000000000000000000000000002C# - Nummer erhöhen und Nullstellen vorhalten

beginnen Wenn ich die int Klasse verwenden, schneidet sie alle Nullen aus. Problem ist, dass ich die Zahl erhöhen muss und sie dann in eine Zeichenfolge mit der richtigen Anzahl von führenden Nullen konvertieren muss. Die Gesamtgröße sollte 40 Ziffern betragen. Also, wenn ich traf 50 zum Beispiel, sollte es so aussehen:

0000000000000000000000000000000000000050

Wie kann ich das tun und die Nullen beibehalten?

+1

werde versuchen Sie etwas mehr verwenden werden, um wie [BigInteger] (http://msdn.microsoft.com/en -us/library/system.numerics.biginteger.aspx) statt "int", andernfalls wird das Inkrement in kurzer Zeit fehlschlagen. – HABO

Antwort

26

Verwenden Sie die Ganzzahl und formatieren Sie oder pad das Ergebnis, wenn Sie in eine Zeichenfolge konvertieren. Wie

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

Siehe Jeppe Stig Nielson's answer für eine Formatierungsoption, die ich auch nie erinnern kann.

+1

Argumente sind in umgekehrter Reihenfolge ... – Tigran

+0

Haben korrigiert, und danke. –

+0

@RhysW, nein, es puffert nur auf die Länge, die Sie mit dem ebenfalls angegebenen Zeichen angeben. Es wird diese Länge nicht überschreiten. Zum Beispiel wird "123" .PadLeft (2, '0') einfach "123" zurückgeben. –

19

Try

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

Natürlich verwenden, kann die int nie so groß wachsen, wie all die Ziffernstellen zu füllen (das größte int nur 10 Stellen aufweisen).

1

konvertieren Sie Ihre Zeichenfolge den Zusatz oder andere Operationen in int, führen, dann mit einer angemessenen Anzahl von führenden 0'en in String konvertieren zurück:

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

Ich hatte etwas ähnliches neulich zu tun, aber ich benötigte nur zwei Nullen. Ich landete mit

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

nicht sicher, ob es narrensicher, aber

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