Zastanawiam się jak określić w jakim systemie została wprowadzona liczba w tex boxie w Windows Forms (binarnym,heksadecymalnym,oktalnym)?
Szukałem w klasie System.Convert http://msdn.microsoft.com/en-us/library/system.convert.aspx
ponieważ wpadłem na pomysł że mogę po prostu każdą wprowadzoną liczbę np. 1010 albo 702 albo ABF10 po prostu konwertować na dziesiętną i pod maską na nich wykonywać operacje jednak nie znalazłem takiej metody. Znacie jakiś optymalny sposób na zrobienie tego?
liczba:
10000
to poprawna liczba w każdym pozycyjnym systemie.
Czyli odpowiedź - nie da się.
Przyjęło się, że liczby w systemach innych niż dziesiętny oznacza się jakimś przedrostkiem, np. 0xDEAD
albo $DEAD
dla liczb szesnastkowych.
Jak to rozpoznać? String.StartsWith
i inne metody, jak String.Substring
, String.IndexOf
.
@_13th_Dragon Jakbyś miał napisać klasę min. do przeliczania liczb między systemami to napisałbyś jedną metodę czy do każdego osobną np.
Bin -> Dec
Hex -> Dec
Oct - > Dec
Bin -> Hex
itd?
@Pytający12, czemu chcesz pisać coś, co już jest?
@somekind chce to wszystko wpakować w klase zeby potem jak bede przenosil pomiedzy WinForms , windows store itd to miec wszystko w jednym miejscu. poza tym ta klasa nie tylko bedzie przeliczac ;)
Tzn. chcesz, żeby Twoja klasa potrafiła zrobić to, co klasa Convert
?
var szesnastkowo = "0xDEAD";
int liczba = Convert.ToInt32(szesnastkowo, 16);
var dwójkowo = Convert.ToString(liczba, 2);
var ósemkowo = Convert.ToString(liczba, 8);
var dziesiętnie = liczba.ToString();
Console.WriteLine(dwójkowo);
Console.WriteLine(ósemkowo);
Console.WriteLine(dziesiętnie);
@somekind
No tak