258. Convert ToInt32

בהמשך לטיפ הקודם,

אחד הדברים הפחות ידועים אודות המחלקה Convert היא העובדה שהיא יודעת להמיר לנו מספר מהייצוג טקסטואלי שלו לפי בסיס מסוים:

1
2
3
int fantastic = Convert.ToInt32("100", 2); // 4
int fifty = Convert.ToInt32("62", 8); // 50
int evil = Convert.ToInt32("11f018be6", 16); // 4815162342

לפני שאנחנו ממהרים לשמוח ולהתחיל לבצע מלא המרות מכל מיני בסיסים, יש פה קאץ’:

הדבר הזה עובד על כל בסיס, כל עוד הוא 2,8,10 או 16 😃

למי שלא מאמין, הנה קטע הקוד מתוך הReflector:

1
2
3
4
5
6
7
8
9
public static int ToInt32(string value, int fromBase)
{
if (((fromBase != 2) && (fromBase != 8)) && ((fromBase != 10) && (fromBase != 0x10)))
{
throw new ArgumentException(Environment.GetResourceString("Arg_InvalidBase"));
}
return ParseNumbers.StringToInt(value, fromBase, 0x1000);
}

יאללה!

יום בבסיס 2 טוב.

שתף