كيف تحويل string الى binary
#1
Question 
السلام عليك:
عندي دالة تحويل string الى binary لكن لم اعرف بالضبط الخطوات التي تقوم بها
كود :
function StrToStrBin(const S: string): string; var pOutput : pChar; pInput : ^byte; N, LenInput : integer; const AtBin : array[boolean] of char = '01'; begin LenInput := Length(S); SetLength(Result, LenInput shl 3); pInput := @S[1]; pOutput := pChar(result); for N := 1 to LenInput do begin pOutput[0] := AtBin[(pInput^ and $80) = $80]; pOutput[1] := AtBin[(pInput^ and $40) = $40]; pOutput[2] := AtBin[(pInput^ and $20) = $20]; pOutput[3] := AtBin[(pInput^ and $10) = $10]; pOutput[4] := AtBin[(pInput^ and $08) = $08]; pOutput[5] := AtBin[(pInput^ and $04) = $04]; pOutput[6] := AtBin[(pInput^ and $02) = $02]; pOutput[7] := AtBin[(pInput^ and $01) = $01]; inc(pOutput,8); inc(pInput); end;
الرد
#2
كود :
Caption:=StrToStrBin('C0DE');


الملفات المرفقة
.zip   String2Bin Example.zip (الحجم : 1.39 ك ب / التحميلات : 16)
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#3
اخي اود معرفة خطوات تشغيل الدالة

كيف تقوم بالتحويل و ليس كيفية كتابتها او توظيفها
[-] كل من 1 user says قال شكرا ل italianjob على المشاركة المفيدة
  • sathex
الرد
#4
باختصار يخذ حرف من السلسلة النصية وكل مرة بقارنه بالBit الذي في الوضع الثامن فان وجده متساوي يضع 1 وإلا يضع 0 ويكرر من الBit الثامن الى الاول
ثم يكرر العملية مع كل حرف من حروف السلسلة النصية String
ما الذي لم تفهمه بالكود اشرح لك
فقط لا تقل لي لم افهم شيئ
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
الرد
#5
اخي عبد العزيز أي bit يقارنه به
الرد
#6
(29-04-2016, 10:49 AM)italianjob كتب : أي bit يقارنه به
حسنا ساحاول ان اشرح ولك ان تستفسر عما لم لفهم
الbyte يتكون من 8 bits تكون اما صفر او 1 من هذا الشكل
00000000
11111111
01010101

ننطلق من اكبر عدد اي الخانة التي في اليسار لو كان واحد والبقية صفر ستكون بهذا الشكل
10000000
هذا هو العدد 128 ونكتبه في النظام ذو الاساس 16 الهكس هكذا 80 في دلفي نظيف $ جهة اليسار دائما

نخذ حرف من السلسلة النصية ونقارن قيمته مع $80
أي نقارن مع 10000000
ان كان غير متساويا النتيجة تكون 0 وان كان العكس تكون 1
طبعا المقارنة هنا غير مباشرة، فهو يقوم باستخدام التعليمة AND التي تعمل على مستوى البت لنخذ مثال
النص المدخل C0DE
اول حرف هو C قيمته 67 بالنظام العشري و43 بالهكس اما بالنظام الثنائي 01000011 وهو المراد الوصول له بعد التحويل
.... ساكمل فيما بعد
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 1 user says قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • sathex
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم