PDA

View Full Version : سوال: چطور می شه یک عدد را از مبنای 10 به مبنای 2 تبدیل کرد؟



man_iran
چهارشنبه 16 مرداد 1387, 13:16 عصر
سلام
برای تبدیل یک عدد از مبنای 10 به مبنای 2 باید چه کار کرد ؟

برای این کار من چند حلقه (for & while) دارم که با تقسیم عدد اون را به مبنای 2 تبدیل می کنم. ولی یه مشکل که هست اینه که تویه محدودی int جا نمی شه و توی double هم درست در نمیات.
خودتون می تونید امتحان کنید.
مثلا این عدد را به مبنای 2 تبدیل کنید :
8567512480000214547621547855521420214347

Salar Ashgi
چهارشنبه 16 مرداد 1387, 13:46 عصر
با سلام ،

عدد رو string در نظر بگیر ، و هر دفعه که تقسیم بر دو می کنی اونو تو یه آرایه ذخیره کن ،

اون وقت دیگه مشکل محدوده نداری و میتونی آرایه رو تو یه string ذخیره کنی و اونو تو

تکست باکس نشون بدی !! :چشمک:

mohammad272005
چهارشنبه 16 مرداد 1387, 15:07 عصر
با این:
public static string ConvertBase(string num, int sourceBase, int desctinationBase)
{
return Convert.ToString(Convert.ToInt32(num, sourceBase), desctinationBase);
}مثلا:
public static string ToBin(this int num)
{
return ConvertBase(num.ToString(), 10, 2);
}

man_iran
پنج شنبه 17 مرداد 1387, 01:59 صبح
با سلام ،

عدد رو string در نظر بگیر ، و هر دفعه که تقسیم بر دو می کنی اونو تو یه آرایه ذخیره کن ،

اون وقت دیگه مشکل محدوده نداری و میتونی آرایه رو تو یه string ذخیره کنی و اونو تو

تکست باکس نشون بدی !! :چشمک:

چطوری؟ مگه می شه string را بر 2 تقسیم کرد!؟
اگر می شه یه نمونه کد یا نمونه برنامه بزارید.




با این:
public static string ConvertBase(string num, int sourceBase, int desctinationBase)
{
return Convert.ToString(Convert.ToInt32(num, sourceBase), desctinationBase);
}مثلا:
public static string ToBin(this int num)
{
return ConvertBase(num.ToString(), 10, 2);
}

ممنون از راهنمایی. ولی بالا گفتم که محدودی int عدد را قبول نمی کنه و double هم درست جواب نمی ده

yasercomeng
پنج شنبه 17 مرداد 1387, 02:21 صبح
بابا نياز به در نظر گرفتن محدوده ي int نداره كه. شما عدد رو به صورت <<string>> داري به تابع Convert.ToInt32 پاس ميدي پس علناً عددي در كار نيست همش كار با رشته است.

man_iran
پنج شنبه 17 مرداد 1387, 02:34 صبح
بابا نياز به در نظر گرفتن محدوده ي int نداره كه. شما عدد رو به صورت <<string>> داري به تابع Convert.ToInt32 پاس ميدي پس علناً عددي در كار نيست همش كار با رشته است.

yasercomeng جان شما یکبار امتحان کنید متوجه منظور من می شید.
وقتی از دستور Convert.ToInt32 استفاده می کنم مگه که عدد شما بیش از محدودی int است.
خواهشا اول خودتون یه امتحانی بکنید و اگر می شه نمونه کد بدید.
مرسی

سار
پنج شنبه 17 مرداد 1387, 09:58 صبح
نکاهی به فرم کلی متد ToString از کلاس Convert بکنید

http://msdn.microsoft.com/en-us/library/system.convert.tostring(VS.71).aspx



string binValue = Convert.ToString(6, 2);
int intValue = Convert.ToInt32("110", 2);
MessageBox.Show("bin: " + binValue.ToString());
MessageBox.Show("int: " + intValue.ToString());

man_iran
پنج شنبه 17 مرداد 1387, 18:41 عصر
نکاهی به فرم کلی متد ToString از کلاس Convert بکنید

http://msdn.microsoft.com/en-us/library/system.convert.tostring(VS.71).aspx



string binValue = Convert.ToString(6, 2);
int intValue = Convert.ToInt32("110", 2);
MessageBox.Show("bin: " + binValue.ToString());
MessageBox.Show("int: " + intValue.ToString());



سلام
ببینید این کدی که شما می گید محدودیت داره
خودتون می تونید امتحان کنید :



string binValue = Convert.ToString(999999999999999999999999999999999 9999999999999, 2);