سلام دوستان.
میشه یک نفر اطلاعات دقیقی در مورد کلاس Convert برای تبدیل انواع در برنامه نویسی #C ارائه بده؟
مثلا برای تبدیل یک شئ از نوع object به انواع دیگر مثلا int باید از متد : convert.toint32(object, XXXXX) استفاده کرد .ولی نمیدونم به جای XXXXX که اینجا نوشتم ، چه آرگومانی باید قرار بدم.
اگه میتونید این متدهای کلاس convert رو بهمون توضیح بدین.چون واقعا فکر میکنم خیلی ها در استفاده از این متدها مشکل دارند.
یه عالمه ممنون از همه دوستان زحمت کش!!!
تابع ()Convert.ChangeType برای تبدیل کلی یک نوع داده به یک نوع داده دیگر است و چون برای انواع داده ای
مختلفی بکار میره، ورودی و خروجی اش از نوع object است.
مثلا ما در obj1 مقدار رشته ای رو داریم و در obj2 به مقدار عددی float تبدیلش می کنیم :
کد:
object obj1 = "3.1415926535897932384626433832795";
object obj2 = Convert.ChangeType(obj1, typeof(float));
[COLOR="Gray"] MessageBox.Show(obj2.ToString());[/COLOR]
در مثال بالا نوع داده خروجی رو با (typeof(float مشخص کردیم که یک Type است،
اما می توانیم بجای مشخص کردن Type نوع داده، کد عددی اون نوع داده را مشخص کنیم :
کد:
object obj1 = "3.1415926535897932384626433832795";
object obj2 = Convert.ChangeType(obj1, TypeCode.Single);
[COLOR="Gray"] MessageBox.Show(obj2.ToString());[/COLOR]
مبنای 64 یک فرمت نمایشی خاص به نام Base64 داره که در ارسال و دریافت کردن ضمایم ایمیل و ارسال و دریافت فایل
در فرم های اینترنتی کاربرد داره و ارقام 0 الی 63 رو به ترتیب با کاراکتر های زیر مشخص می کنه :
کد:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
مزیت Base64 در اینه که همه کاراکتر های آن قابل نمایش اند و می توانیم محتویات یک فایل باینری را بصورت
یک متن قابل نمایش ارسال کنیم.
از اونجایی که کاراکتر های Base64 شامل 64 حالت اند، هر کاراکتر معادل 6 بیت است و داده های 6 بیتی رو در یک کاراکتر 8 بیتی ثبت می کنند و دو بیت هدر می رود.
لذا هر سه بایت (24 بیت) داده ورودی در 4 بایت (32 بیت) جای می دهد و اگر خواستید یک آرایه را به Base64
تبدیل کنید بایستی این نسبت 3 به 4 را در هنگام تعریف کردن آرایه خروجی در نظر بگیرید.
تابع ()Convert.FromBase64String یک رشته Base64 را به آرایه ای از بایت ها تبدیل می کند. اگر این بایت ها
مربوط به یک رشته ASCII باشند، می توانیم با ASCII.GetString آنها را به رشته string تبدیل کنیم :
کد:
string base64 = "U2FtcGxl";
string text = Encoding.ASCII.GetString(Convert.FromBase64String(base64));
[COLOR="Gray"] MessageBox.Show(text);[/COLOR]
تابع ()Convert.FromBase64CharArray همینکار ()Convert.FromBase64String را در مورد یک آرایه ای
از char ها انجام می دهد :
کد:
char[] base64 = "U2FtcGxl".ToCharArray();
string text = Encoding.ASCII.GetString(Convert.FromBase64CharArray(base64, 0, base64.Length));
[COLOR="Gray"] MessageBox.Show(text);[/COLOR]
تابع ()Convert.ToBase64String یک آرایه از بایت ها را به صورت رشته ای از کاراکتر های Base64 تبدیل می کند :
کد:
byte[] text = Encoding.ASCII.GetBytes("Sample");
string base64 = Convert.ToBase64String(text);
[COLOR="Gray"] MessageBox.Show(base64);[/COLOR]
تابع ()Convert.FromBase64CharArray همینکار ()Convert.ToBase64String را در مورد یک آرایه ای
از char ها انجام می دهد، نسبت به 4 به 3 باید رعایت شود :
کد:
byte[] text = Encoding.ASCII.GetBytes("Sample");
char[] base64 = new char[(int)Math.Ceiling((4.0 / 3.0) * text.Length)];
Convert.ToBase64CharArray(text, 0, text.Length, base64, 0);
[COLOR="Gray"] MessageBox.Show(new string(base64));[/COLOR]
تابع ()Convert.ToBoolean برای تبدیل یک داده به bool بکار می رود :
کد:
string text = "True";
bool state = Convert.ToBoolean(text);
[COLOR="Gray"] MessageBox.Show((state) ? "Yes" : "No");[/COLOR]
تابع ()Convert.ToByte برای تبدیل یک داده به byte بکار می رود :
کد:
int code = 0x2e1c8b80 & 0xff;
byte b = Convert.ToByte(code);
[COLOR="Gray"] MessageBox.Show(b.ToString());[/COLOR]
تابع ()Convert.ToChar برای تبدیل یک داده به char بکار می رود :
کد:
int code = 169;
char copyright = Convert.ToChar(code);
[COLOR="Gray"] MessageBox.Show(copyright.ToString());[/COLOR]
تابع ()Convert.ToDateTime برای تبدیل یک داده به DateTime بکار می رود :
کد:
string text = "4/16/2010 07:17:56 PM";
DateTime date = Convert.ToDateTime(text);
[COLOR="Gray"] MessageBox.Show(date.TimeOfDay.ToString());[/COLOR]
کاربرد توابع ()Convert.ToDecimal و ()Convert.ToDouble و ()Convert.ToSingle هم که مشخصه، تبدیل
یک داده به انوع داده های اعشاری :
کد:
string text = "123.45";
decimal number = Convert.ToDecimal(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "123.45";
double number = Convert.ToDouble(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "123.45";
Single number = Convert.ToSingle(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "12345";
short number = Convert.ToInt16(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کاربرد توابع ()Convert.ToInt16 و ()Convert.ToInt32 و ()Convert.ToInt64 و ()Convert.ToSByte تبدیل
یک داده به انوع داده های صحیح علامت دار است :
کد:
string text = "-12345";
short number = Convert.ToInt16(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "-12345";
Int32 number = Convert.ToInt32(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "-12345";
Int64 number = Convert.ToInt64(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "-123";
sbyte number = Convert.ToSByte(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
توابع ()Convert.ToUInt16 و ()Convert.ToUInt32 و ()Convert.ToUInt64 تبدیل یک داده به انوع داده های
صحیح بدون علامت است که بازه قابل قبول شان برای اعداد مثبت دو برابر بازه اعداد صحیح علامت دار معادل شان
است، اما اعداد منفی را نمی پذیرند :
کد:
string text = "65535";
UInt16 number = Convert.ToUInt16(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "4294967295";
UInt32 number = Convert.ToUInt32(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
کد:
string text = "18446744073709551615";
UInt64 number = Convert.ToUInt64(text);
[COLOR="Gray"] MessageBox.Show(number.ToString());[/COLOR]
تابع ()Convert.ToString یک داده را به رشته معادل اش تبدیل می کند. این تابع مبنا های عددی را پشتیبانی می کند،
مثلا تبدیل یک عدد به مبنای 2 (باینری) توسط این تابع میسر است :
کد:
int number = 165;
string text = Convert.ToString(number, 2);
[COLOR="Gray"] MessageBox.Show(text);[/COLOR]
تبدیل یک عدد به مبنای 16 یا همان هگزادسیمال :
کد:
int number = 43190;
string text = Convert.ToString(number, 16);
[COLOR="Gray"] MessageBox.Show(text);[/COLOR]
تبدیل مقدار بولی به رشته که "True" و "False" هستند :
کد:
bool state = (3 > 5);
string text = Convert.ToString(state);
[COLOR="Gray"] MessageBox.Show(text);[/COLOR]