السلام عليكم ورحمة الله وبركاته
هل يوجد طريقة لتحويل عدد صحيح الى Binary
مثال تحويل رقم 100 إلى 1100100
ولكم جزيل الشكر
محمد ربيع
السلام عليكم ورحمة الله وبركاته
هل يوجد طريقة لتحويل عدد صحيح الى Binary
مثال تحويل رقم 100 إلى 1100100
ولكم جزيل الشكر
محمد ربيع
الطريقة الرياضية هي كالتالي
لنفرض أننا نريد تحويل العدد x إلى النظام الثنائي ونضعه مثلا في متحول y
*إذا كان x زوجي نضيف صفر على يسار Y وإلا نضيف واحد على يسار y أيضا
*ثم نقسم x على 2 (قسمة دون باقِ)
نكرر الخطوتين السابقتين حتى يصبح x=0
وهذا هو الكود في دلفي (طبعا القيمة المعادة هي سلسلة نصية تجنبا لطول الأرقام الثنائية )
function inttobin(val:integer):string; var s:string; begin s:=''; while val<>0 do begin s:=inttostr(val mod 2)+s; val:=val div 2; end; result:=s; end;
ممكن أخي eiadkasem1982
تخبرني عن
HexToBin
BinToHex
الموجوده في ( Classes)
يوجد غيرها أيضا وكأنها تحويل لشيئ في (SysUtils)
ماهي وطريقة استخدامها
إذا أمكن للفائده فقط
""""""""""""""""""""""""""
ماأريد الوصول له
عندما أقوم بعمل hex بإحدى البرامج مثلا Hex Workshop
لواحد من برامجي التى قمت بتصميمها
أجد البيانات من نوع string في مشروعي مكشوفه وتظهر كامله في البرنامجHex Workshop
ويمكن تغييرها والتعديل عليها
!!!!!!!!
لماذا ومالحل
وشكرا
محمـــــــــد
المملكه العربيه السعوديـــه
[الفريق العربي للبرمجه الأفضـل دائما]
::::::::::::::::::::::::::::::::::::
msvbvm60.dll = فيجوال بيسك
.................= دلفــــــــــــــي
::::::::::::::::::::::::::::::::::::
أشكرك أخي الكريم eiadkasem
هل يمكنك ذكر الطريقة التي يتم فيها التحويل بالعكس
من Binary To Decimal
جزاك الله كل خير
وتقبل أطيب التحيات
محمد ربيع
الطريقة الحسابية وليست البرمجية:
total=2^0*1st bit+2^1*2nd bit+2^3*3rd bit+...+2^(n-1)*nth bit
حيث n هي رقم الخانة الاخيرة MSB للرقم الثنائي، 1st BIT هي الخانة الاولى للرقم الثنائى من اليمين LSB.
تم تعديل هذه المشاركة بواسطة عماد الخليل في 31 أغسطس 2004 في 22:15

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر
فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري
لقراءة القرآن الكريم و سماعه و تفسيره ........

بالنسبة للتحويل من ثنائي إلى عشري فالطريقة تماما كما ذكرها الأخ عماد مشكورا
أي أن العدد العشري المقابل لعدد ثنائي هو مجموع خاناتالعدد الثنائي بعد ضرب كل خانة بالرقم 2 مرفوعاً إلى قوة هي رقم هذه الخانة (على اعتبار ترقيم الخانات يبدأ من الصفر ومن اليمين)
مثلاً
100 0*1+0*2+1*4 كذلك 1010 0*1+1*2+0*4+1*8
وهذا هو الكود في دلفي(كتبته مباشرة ولم أجربه )
function bintodec(buf:string):integer; var i, rank:integer; begin result:=0; rank:=1; for i:=length(buf)downto 1 do begin if buf='1' then result:=result+rank; rank:=rank*2; end; end;
طبعا نمرر للتابع السابق متحول نصي واحدات وأصفار (يدل على الرقم الثنائي المطلوب مع ملاحظة أنه عند وجود محارف غير الصفر والواحد سيتم اعتبارها أصفار)
وبالنسبة ل hextobin و bintohex لم أجربهما قبلاً ولم أتمكن من معرفة عملهما ...!!!
اما مشكلة ظهور السلاسل النصية كما هي عند تحرير الملف التنفيذي بمحرر ست عشري فهي مشكلة لا أعرف حلاً سهلا لها ولكني عادةً أقوم بتشفير النص المطلوب (عن طريق خوارزمية تشفير بسيطة صممتها) ثم أضع النص المشفر في متحول نصي ضمن كود البرنامج وأقوم بتضمين خوارزمية فك التشفير ضمن البرنامج
وفي حدث إنشاء الفورم (oncreate) أقوم بفك تشفير النص الموجود في المتحول النصي السابق وأضعه في مكانه المناسب ...
السلام عليكم
اشكر الاخوة eiadkasem و عماد على هذه الردود
وجزاكم الله كل خير
محمد ربيع
السلام عليكم ورحمة الله وبركاته
مشكلة ظهور النصوص فى Hex mode مشكلة لكل لغات البرمجة وليس شئ خاص بالدلفى
وعندى حل ارجو ان يكون مفيد ولكنه ليس نهائى ولا قوى قدر المطلوب وانا مجربه بنفسى
شوف حبيب قلبى بعد عمل برنامجك يجب تشفيره باحد برامج التشفير التى تعرفها ولا تخفى عليك كالUPX مثلا وهو حل فعال ويقوم ايضا بضغط حجم البرنامج اى تقليل حجمه
تم تعديل هذه المشاركة بواسطة JuStNiCk في 3 سبتمبر 2004 في 15:09
{ربى زدنى علما}
هذا الموضوع مغلق.