Press "Enter" to skip to content

c# konwersja string na int

Hejo.

Weszłam sobie do analiz i postanowiłam wziąć pierwsze z brzegu zapytanie od wielkiego G.
Tym razem będzie to „c# konwersja string na int”.
Ludzie szukają krótkiej odpowiedzi więc jej udzielę.

string napis = "123"
int moja_zmienna = Int32.Parse(napis);

Analogicznie Int32 zmieniamy na Int16, Int64 itd. zależnie jak długiego inta potrzebujemy.
Działa to również dla typów zmiennoprzecinkowych (Single, Double), typu Decimal itp.

Jeżeli nie jesteś pewien czy w napisie będzie siedzieć liczba, to lepiej użyj TryParse.

string napis = "123"
int mojaZmienna;
bool mamyTo = Int32.TryParse(napis, out mojaZmienna);
if (!mamyTo)
{
 	Console.WriteLine($"Ale miała być liczba a nie jakieś dziwne {napis}");
}
//tu jakaś logika

Tak to wygląda dla systemu dziesiętnego. Inne trzeba załatwić już nie funkcją Parse / TryParse, a funkcją Convert. Na przykład dla hexa:

string liczbaWHex = "0x123CBD";
int liczba = Convert.ToInt32(liczbaWHex , 16);

Oczywiście też działa z różnymi typami- zamiast stringa można podać boola albo jakiś typ numeryczny i łyknie. Jak ma być dłuższy int, to zamiana na ToInt64 też działa (i analogiczna podmianka typów jak w funkcji powyżej).
Ogólnie Convert.ToTyp(cokolwiek, parametry) pozwala konwertować wszystko co ma sens na wszystko inne co ma sens.

Mamy jeszcze wynalazek typu
int.Parse(„123adb”, System.Globalization.NumberStyles.HexNumber)
dla hex, ale nie wygląda to zbyt naturalnie;)

Więcej na stronie z dokumentacją i szukajka w lewym górnym.