نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • ایمنی
  • آنچه هنگام مشاهده باینری ها مشاهده می شود. نحوه به روز رسانی یک فایل SU باینری در اندروید - بازیابی دسترسی ریشه برای برنامه SuperSu

آنچه هنگام مشاهده باینری ها مشاهده می شود. نحوه به روز رسانی یک فایل SU باینری در اندروید - بازیابی دسترسی ریشه برای برنامه SuperSu

یک فایل باینری به هر فایلی در رایانه شما گفته می شود. تمام اطلاعات روی یک کامپیوتر و رسانه های مربوطه در بیت ها ثبت می شود (از این رو نام). با این حال، برای مقایسه، یک فایل متنی را می توان در خوانندگان مربوط به پسوند (ساده ترین آنها - حتی در Notepad) خواند، اما فایل اجرایی نمی تواند. و اگرچه در واقع فایل txt همان فایل باینری است، اما وقتی در مورد مشکل باز کردن محتویات فایل های باینری صحبت می کنند، منظورشان است. فایل های اجراییو همچنین داده های فشرده.

شما نیاز خواهید داشت

دستورالعمل ها

  • برنامه Hex Edit را در هارد دیسک دانلود کنید - یک ویرایشگر فایل که محتوای آنها را به صورت باینری نشان می دهد. برنامه را با دوبار کلیک کردن روی فایل start باز کنید. این نرم افزاربه شما امکان می دهد فایل های باینری را در زمان واقعی بخوانید، محتوا را تغییر دهید، فایل های خود را اضافه کنید سوابق خودو خیلی بیشتر. برای کار کامل در این محیط، باید کمی در مورد آن بدانید مفاهیم کلیفایل های باینری
  • پنجره برنامه تفاوت چندانی با ویرایشگر معمولی ندارد: منو و پانل آشنا با دکمه ها، بدنه فایل ویرایش شده، نشانک ها و نوار وضعیت. باز کن فایل باینریاز طریق منوی File یا با کلیک بر روی نماد مربوطه در پانل. فایل باینری به صورت رشته هایی با اعداد و حروف در مقابل شما ظاهر می شود. این کاراکترها را با داده های چاپ شده اشتباه نگیرید. فایل های متنی... آنها همچنین می توانند با حذف نمادها ویرایش شوند، اما سلول های حاوی داده ها، قطعات فایل را حذف می کند.
  • در محتویات فایل تغییراتی ایجاد کنید. این برنامه می تواند قسمت های مهم فایل را برای اطلاعات بیشتر نشان دهد جستجوی راحتو همچنین دارای سفارشی سازی انعطاف پذیر است نمایشگر گرافیکی کد باینری... برای مشاهده، نمای محتوا را به حالت ASCII + IBM / OEM تغییر دهید کد برنامهفایل. اگر خطوط را اشتباه در فایل وارد کنید، ممکن است به درستی کار نکند و عواقب جدی برای آن ایجاد کند سیستم عاملکامپیوتر شخصی.
  • تغییرات خود را ذخیره کنید اگر تجربه ای در ویرایش فایل ها به این روش ندارید، پس از ایجاد تغییرات، آماده باز نشدن فایل و امتناع از کارکردن آن باشید. به احتمال زیاد قبل از انجام کار، چند نسخه را خراب خواهید کرد. سعی کنید همه تغییرات را ذخیره نکنید فایل اصلیتا محتوای آن بدون تغییر بماند.
  • رکوردها)، سپس تمایل به کاهش فضای استفاده نشده اما اشغال شده حافظه کاملاً قابل درک است.

    به خصوص برای چنین مواردی وجود دارد رکوردها با بخش متغیر.

    شرح یک رکورد با یک قسمت متفاوت

    در بخش var رکورد با قسمت متغیربه شرح زیر توضیح دهید:

    var<имя_записи>: رکورد<поле1>: <тип1>; [<поле2>: <тип2>؛] [...] مورد<поле_переключатель>: <тип>از<варианты1>: (<поле3>: <тип3>; <поле4>: <тип4>; ...); <варианты2>: (<поле5>: <тип5>; <поле6>: <тип6>; ...)؛ [...] پایان؛

    بخش غیر متغیرسوابق (قبل از کلمه کلیدیمورد) از همان قوانین پیروی می کند ورود منظم... به طور کلی، بخش غیر متغیر ممکن است به طور کلی وجود نداشته باشد.

    قسمت متفاوتبا کلمه رزرو شده شروع می شود، پس از آن فیلد رکورد نشان داده می شود، که بیشتر به عنوان یک سوئیچ عمل می کند. مانند یک عبارت case معمولی، سوئیچ باید متعلق به یکی از موارد باشد انواع برشمرده شدهداده ها (به سخنرانی 3 مراجعه کنید). لیست انتخاب ها می تواند یک ثابت، یک محدوده یا ترکیبی از چندین ثابت یا محدوده باشد. مجموعه فیلدهایی که باید در ساختار رکورد گنجانده شود، در صورتی که گزینه مربوطه انجام شده باشد، داخل پرانتز قرار می گیرد.

    مثال... برای توصیف محتویات کتابخانه به اطلاعات زیر نیاز است:

    ستون های «عنوان» و «ناشر» در هر سه گزینه مشترک هستند و بقیه قسمت ها به نوع نسخه چاپی بستگی دارد. برای پیاده سازی این ساختار استفاده خواهیم کرد ورودی با قسمت متغیر:

    نوع biblio = نام رکورد، ناشر: string; مورد: کاراکتر "ب": (نویسنده: رشته؛ سال: 0..2004); "n": (داده ها: تاریخ)؛ "m": (سال: 1700..2004؛ ماه: 1..12؛ تعداد: عدد صحیح)؛ پایان؛

    بسته به مقدار فیلد مورد، رکورد شامل 4، 5 یا 6 فیلد خواهد بود.

    مکانیسم استفاده از یک رکورد با یک قطعه متغیر

    تعداد بایت های اختصاص داده شده توسط کامپایلر برای رکورد با قسمت متغیر، توسط "طولانی ترین" نسخه آن تعیین می شود. مجموعه‌های کوتاه‌تر از فیلدها از انواع دیگر تنها کسری از حافظه اختصاص داده شده را اشغال می‌کنند.

    در مثال بالا، "طولانی ترین" گزینه "b" است: به 23 بایت نیاز دارد (21 بایت برای یک رشته و 2 بایت برای یک عدد صحیح). برای گزینه های "n" و "m" به ترتیب 4 و 5 بایت مورد نیاز است (جدول را ببینید).

    نام، ناشر مورد قسمت متفاوت
    ... "ب" نویسنده سال
    ... "ن" داده ها
    ... "م" سال ماه عدد
    ... "ب" نویسنده سال

    فایل های باینری

    فایل های باینری اطلاعات را به شکلی که در حافظه کامپیوتر نشان داده شده اند ذخیره می کنند و بنابراین برای انسان ناخوشایند هستند. با نگاه کردن به چنین پرونده ای، درک آنچه در آن نوشته شده است غیرممکن است. نمی توان آن را به صورت دستی ایجاد یا اصلاح کرد - در برخی از ویرایشگرهای متن - و غیره. با این حال، تمام این ناراحتی ها با سرعت کار با داده ها جبران می شود.

    همچنین فایل های متنی متعلق به ساختارها هستند دسترسی متوالی، و باینری - مستقیم. این بدان معنی است که در هر زمان می توانید به هر کسی مراجعه کنید، نه فقط عنصر فعلی.

    کار با فایل های باینری

    تمام اطلاعات به صورت 0 و 1 یعنی به صورت باینری در کامپیوتر ذخیره می شود. تفاوت فایل های باینری با فایل های متنی فقط در نحوه کار با آنهاست. به عنوان مثال، اگر عدد "4" را در یک فایل متنی بنویسیم، به صورت یک کاراکتر نوشته می شود و برای ذخیره آن یک بایت لازم است. بر این اساس حجم فایل برابر با یک بایت خواهد بود. فایل متنی حاوی ورودی "145687" شش بایت خواهد بود.

    اگر عدد صحیح 145687 را در یک فایل باینری بنویسیم، اندازه آن چهار بایت خواهد بود، زیرا این دقیقاً همان مقداری است که برای ذخیره داده های نوع int نیاز است. یعنی باینری ها فشرده تر هستند و در برخی موارد پردازش آنها راحت تر است.

    در حال ضبط انواع استانداردداده ها به باینری ها

    برای باز کردن یک فایل باینری، باید حالت دسترسی را روی ios :: باینری تنظیم کنید (در برخی از کامپایلرهای C ++ - ios :: bin).

    برای ایجاد یک فایل خروجی، یک شی ایجاد کنید:

    ofstream outBinFile ("out.bin"، ios :: out | ios :: باینری);

    /* ایجاد شی کلاسجریان بیرون صندوقچه

    اگر (! out_f і 1) // چک استاندارد

    داده ها با استفاده از روش نوشتن () نوشته می شوند که دارای دو پارامتر است: اولی نشانگر شروع (آدرس ابتدای) داده های در حال نوشتن است، دومی تعداد بایت هایی است که باید نوشته شود. در این حالت، اشاره گر باید به صراحت به نوع char تبدیل شود.

    مثال 1.متغیرهایی از انواع مختلف را در یک فایل باینری بنویسید:

    ofstream outBinFile ("test.bin"، ios :: out I

    ios:: باینری)؛ / ^ شی کلاس ایجاد کنیداز جریان و سعی کنید آن را به فایل پیوند دهیدتست. صندوقچه در حالت نوشتن باینری * /

    int a - 145687; // یک متغیر عدد صحیح را اعلام کنیدآ

    outBinFi le. نوشتن ((char *) & a, sizeof (a)); / ^ در فایل بنویسید

    متغیرآ به عنوان یک جریان از بایت ها، یعنی نوشتن نمایش داخلی یک متغیر عدد صحیح در یک فایل a * / float x - 123.25; // اعلان متغیر واقعیایکس

    outBinFile .write ((char *) & x, sizeof (x)); / ^ در فایل بنویسید

    متغیرایکس به عنوان یک جریان از بایت، به عنوان مثال نوشتن در یک فایل نمایش داخلی یک متغیر عدد صحیح x * /

    // یک متغیر نمادین تعریف کنیدبا و با علامت g مقداردهی اولیه می کنیم outBinFile.write ((char *) & c, sizeof (c));

    // یک نماد بنویسید g برای تشکیل پرونده

    outBinFile.close (); بازگشت 0;

    اگر محتویات فایل test .bin را با یک ویرایشگر متن باز کنید، به شکل زیر خواهد بود:

    و حجم فایل 9 بایت است.

    خواندن انواع داده های استاندارد از فایل های باینری

    برای باز کردن یک فایل باینری موجود برای خواندن، باید یک شی ایجاد کنید:

    ifstream inpBinFile ("inp.bin"، ios :: در Ios :: باینری)؛

    /* ما از جدایی پرچم ها استفاده می کنیم که نشان می دهد فایل برای خواندن به شکل باینری باز شده است * /

    اگر (! inpBinFile)

    cout برای خواندن داده ها، از تابع read () استفاده کنید که پارامترهایی مشابه تابع نوشتن () دارد.

    #include using namespace std; int main ()

    ifstream inpBinFile ("test.bin"، ios :: در I

    ios:: باینری)؛ / / فایل را برای خواندن به صورت باینری باز کنید

    int a; شناور x; char with = "g";

    inpBinFile.read ((char *) & a, sizeof (a));

    // یک متغیر عدد صحیح را بخوانید inpBinFile.read ((char *) & x, sizeof (x));

    // یک متغیر واقعی را بخوانید inpBinFile.read ((char *) & c, sizeof (c));

    // یک متغیر نمادین را بخوانید

    inpBinFile.close (); کوت

    نتیجه برنامه:

    a = 145687 x = 123.25 c = g

    توجه داشته باشید که هنگام استفاده از توابع نوشتن و خواندن، هیچ تبدیل اطلاعاتی رخ نمی دهد. نمایش داخلی داده ها در فایل نوشته شده و خوانده می شود. به همین دلیل است که دو برنامه های قبلینتیجه درست را داد.

    نوشتن و خواندن انواع سفارشیداده ها به باینری ها

    بر خلاف فایل های متنی، کار با انواع داده های سفارشی با استفاده از فایل های باینری تفاوتی با انواع داده های استاندارد ندارد. روش نوشتن () و خواندن () به روشی مشابه استفاده می شود. برنامه نویس فقط باید آدرس ناحیه حافظه ای که باید نوشته شود و تعداد بایت هایی که باید نوشته شود را مشخص کند، با در نظر گرفتن اینکه هیچ تبدیل داده ای رخ نمی دهد، فقط نمایش داخلی اطلاعات نوشته و خوانده می شود.

    همچنین هنگام کار با فایل های باینری می توان از متدهای seekg ()، tellg ()، seekp ()، tellp () استفاده کرد.

    مثال 3.برنامه ای بنویسید که اطلاعات گروهی از گردشگران را در یک فایل باینری بنویسد.

    fstream BinFile ("ankety.bin"، ios :: در Ios :: خارج | ios :: باینری)؛

    Anketa Gruppa =; برای (int i = 0; i

    BinFile.write ((char *) & Gruppa [i]، sizeof (Anketa)); BinFile.close (); بازگشت 0;

    مثال 4.فایل "ankety.bin" حاوی داده های مربوط به گروهی از گردشگران است که مطالعه آنها و نمایش آنها ضروری است.

    #include using namespace std; ساخت آنکتا (

    نام شخصیت؛ بین سن

    نوع داده ساختار یافتهآنکتا به صفحه */

    ostream & operator

    fstream BinFile ("ankety.bin"، ios :: در | ios :: خارج | ios :: باینری)؛ اگر (! BinFile)

    برای (int i = 0; i

    // بلافاصله تمام بایت های اشغال شده را بخواند نوع متغیر Anketa BinFile.read ((char *) & Gruppa [i], sizeof (Anketa));

    BinFile.close (); بازگشت 0;

    نتیجه برنامه:

    ایوانف، 23 سیدوروف، 21 پتروف، 22

    کلیدی را برای ادامه فشار دهید. ... ...

    در حال توسعه کلاس های خود برای کار با فایل ها

    استفاده مداوم از روش های نوشتن () و خواندن () ناخوشایند است، استفاده از عملیات ">" با قیاس با فایل های متنی بسیار لذت بخش تر است. بیایید مثالی از پیاده سازی کلاس خود برای کار با باینری ها ارائه دهیم.

    با استفاده از namespace std.

    ساخت آنکتا // ساختاری را برای ذخیره اطلاعات اعلام کنید

    / * عملیات درج را برای خروجی کاربر بارگذاری کنید

    نوع داده ساختار یافتهآنکتا به صفحه */

    ostream & operator

    کلاس outBinaryFile: عمومی از stream / ^ کلاس خود را برای کار با باینری های خروجی تعریف می کنیم. ما آن را از کلاس برای کار با جریان های فایل خروجی تولید می کنیم * /

    / * هنگام توصیف سازنده کلاس تولید شده، فراموش نکنید که سازنده کلاس پایه را فراخوانی کنید و پارامترهای لازم را به آن ارسال کنید * /

    outBinaryFile (char * name): ofstream (name, ios :: out Ios :: باینری)

    // اضافه بار عملیات لازمبه عنوان روش های کلاس outBinaryFile و اپراتور

    نوشتن ((char *) & chislo، sizeof (chislo)); بازگشت * این

    outBinaryFile و اپراتور

    نوشتن ((char *) & ank, sizeof (ank)); بازگشت * این

    کلاس inpBinaryFile: public if stream / * ما کلاس خود را برای کار با باینری های ورودی تعریف می کنیم. ما آن را از کلاس برای کار با جریان های فایل ورودی تولید می کنیم * /

    inpBinaryFile (char * name): ifstream (نام، ios :: در Ios :: باینری)

    / * سازنده کلاس پایه را با پارامترهای مورد نیاز فراخوانی کنید.

    به اندازه کافی برای سازنده کلاس مشتق شده * /

    // عملیات لازم را اضافه بار کنید

    inpBinaryFile & operator >> (int & chislo)

    خواندن ((char *) & chislo, sizeof (chislo)); بازگشت * این

    inpBinaryFile & operator >> (Anketa & ank)

    خواندن ((char *) & ank, sizeof (ank)); بازگشت * این

    int a = 111، b = 112; outBinaryFile outFile ("dannye.bin");

    // فایل را برای خواندن باز کنید

    inpBinaryFile inpFile ("dannye.bin"); اگر (! inpFile)

    برای (int і = 0; i

    inpFile >> a; // پرسشنامه را از روی فایل بخوانید

    cout // و آن را روی صفحه نمایش دهید

    inpFile >> anketa; کوت

    نتیجه برنامه:

    کولیا 1990، 582-78-95.

    کلیدی را برای ادامه فشار دهید. ... ...

    1. آیا امکان استفاده از عملیات در برنامه وجود دارد؟

    ios :: در Ios :: خارج

    • الف) بله، در هر صورت؛
    • ب) بله، اما فقط هنگام کار با فایل های متنی.
    • ج) خیر، در هر صورت.
    • 2. گزینه صحیح را برای باز کردن یک فایل متنی برای خواندن مشخص کنید:
      • الف) ifstream inpF ("input.txt"، ios :: in);
      • ب) ifstream inpF ("input.txt"، ios :: ورودی);
      • ج) ifstream inpF (ios: in، "input.txt").

    ح- در نتیجه اجرای کد زیر چه چیزی نمایش داده می شود؟

    inputFile.get (c)؛

    بعدی - inputFile.peek ();

    اگر (بعدی == EOF)

    • الف) محتویات فایل مرتبط با جریان inputFile یک بار نمایش داده می شود.
    • ب) محتویات فایل مرتبط با جریان inputFile روی صفحه نمایش داده می شود عدد بی نهایتیک بار؛
    • ج) چیزی روی صفحه نمایش داده نمی شود.
    • 4. چند کاراکتر در فایل وجود دارد؟
    • 12 3 4 5 6
    • الف) 6؛
    • ب) 7;
    • در 11.
    • 5. برای تعیین انتهای فایل از چه روش هایی می توان استفاده کرد؟
    • الف) eof ()؛
    • ب) خوب ()؛
    • ج) هر دوی این روشها.
    • 6. تابع getline () برای چیست؟
    • الف) کلمه ای را از یک فایل می خواند.
    • ب) کل محتویات فایل را می خواند.
    • ج) یک خط از یک فایل را می خواند.
    • 7. برای نوشتن / خواندن انواع داده های سفارشی در یک فایل، باید:
      • الف) بارگذاری بیش از حد عملیات ">>" و "
      • ب) نوشتن و خواندن انواع داده های سفارشی بدون اقدامات اضافی در دسترس است.
      • ج) نوشتن و خواندن انواع داده های تعریف شده توسط کاربر در یک فایل امکان پذیر نیست.
    • 8. چه توابعی برای نوشتن / خواندن اطلاعات به صورت باینری استفاده می شود؟
    • الف) printf / scanf؛
    • ب) نوشتن / خواندن؛
    • ج) قرار دادن / بدست آوردن.
    • 1. برنامه ای بنویسید که حروف الفبای انگلیسی را در یک فایل بنویسد.
    • 2. فایل input.txt حاوی اطلاعاتی از چندین است رشته های متنی... محتویات این فایل را روی صفحه نمایش دهید، تعداد خطوط فایل را بشمارید.
    • 3. دیسک حاوی فایل result.txt با نتایج آزمایشات شیمیایی است. برنامه ای بنویسید که یک کپی از این فایل به نام copy_resylt.txt ایجاد کند.
    • 4. نام فایل را با استفاده از صفحه کلید وارد کنید. V فایل مشخص شدهتمام خطوط زوج را حذف کنید
    • 5. برنامه ای بنویسید که جایگزین همه چیز در یک فایل متنی شود حروف کوچکحروف بزرگ و بالعکس
    • 6. فایل متنی اصلی حاوی اعدادی است که با فاصله از هم جدا شده اند. دو فایل جدید ایجاد کنید: اولی باید فقط شامل اعداد زوج باشد و دومی - فرد.
    • 7. اعداد واقعی در فایل نوشته می شوند. برنامه ای بنویسید که دور انداخته شود قسمت کسریاین اعداد را داشته باشید و در یک فایل جدید بنویسید.
    • 8. فایل متنی حاوی اطلاعات پروازهای شرکت هواپیمایی است. از این داده پروازهایی را که بعدازظهر حرکت می کنند انتخاب کنید و آنها را روی صفحه نمایش دهید.
    • 9. اپراتورهای اضافه بار >> و
    • 10. کلاس خود را برای کار با باینری بنویسید.
    • 11. لیستی از 10 عضو کلاس را در یک فایل متنی و یک فایل باینری بنویسید. این فایل ها را مقایسه کنید تفاوت حاصل را توضیح دهید.
    • 12. کلاسی ایجاد کنید که اطلاعات خودروها را در یک فایل (سال ساخت، ساخت، رنگ و غیره) در یک فایل متنی بنویسد. در این حالت، هر نماد اطلاعات با کد ABO 1 خود جایگزین می شود. فایل حاصل را روی صفحه نمایش دهید.

    کنترل سوالات

    • 1. از چه کلاس هایی برای کار با جریان فایل استفاده می شود؟
    • 2. هنگام کار با فایل ها از چه حالت های دسترسی می توان استفاده کرد؟ مثال بزن.
    • 3. برای باز کردن فایل از چه روشی استفاده می شود؟ مثال بزن.
    • 4. چه عملیاتی برای کار با فایل ها موجود است؟ چه توابعی برای این عملیات وجود دارد؟
    • 5. چه روش هایی به شما اجازه می دهد تا انتهای فایل را هنگام خواندن اطلاعات از آن تعیین کنید؟ تفاوت این روش ها چیست؟ مثال بزن.
    • 6. چگونه می توانید متغیرهای انواع داده های استاندارد را از فایل های متنی بخوانید؟
    • 7. آیا می توان متغیرهای نوع داده تعریف شده توسط کاربر را از فایل های متنی خواند؟
    • 8. برای چه کارکردهایی در نظر گرفته شده است خواندن تصادفیاطلاعات از فایل؟ مثال بزن.
    • 9. باینری ها چه ویژگی هایی دارند؟ مزایای استفاده از چنین فایل هایی چیست؟
    • 10. از چه توابعی می توان برای نوشتن / خواندن اطلاعات در فایل های باینری استفاده کرد؟
    • 11. چگونه می توان متغیرهای انواع داده های استاندارد را از یک فایل باینری خواند؟
    • 12. هنگام خواندن انواع داده های سفارشی از فایل های باینری چه ملاحظاتی را باید در نظر بگیرید؟
    • "ایوانف"، 23)، ("سیدوروف"، 21)،

    نمونه‌هایی که تاکنون در نظر گرفته‌ایم، ورودی/خروجی فرمت‌شده اطلاعات را به فایل‌ها نشان می‌دهند. استفاده از ورودی/خروجی فایل های فرمت شده تنها در مواقعی که اندازه و تعداد آنها کم است و همچنین در مواقعی که امکان مشاهده فایل ها بدون نیاز است توصیه می شود. توسط نرم افزار... در غیر این صورت، البته، استفاده از I / O باینری بسیار کارآمدتر است، که در آن اعداد به همان روشی که در OP رایانه ذخیره می شوند و نه به صورت رشته های کاراکتر ذخیره می شوند. اجازه دهید به شما یادآوری کنم که یک مقدار صحیح (int) یا واقعی (float) 4 بایت در حافظه اشغال می کند، مقدار از نوع دوبل 8 بایت است و مقدار کاراکتر نوع char 1 بایت است. برای مثال عدد 12345 در یک فایل متنی (فرمت شده) 5 بایت و در فایل باینری 4 بایت است.

    فایل های باینری، یعنی فایل هایی که اطلاعات در آنها به شکل داخلی ذخیره می شود برای استفاده بعدی توسط نرم افزار استفاده می شود، آنها توسط غیر نرم افزار قابل مشاهده نیستند. مزیت فایل های باینری این است که اولاً هنگام خواندن / نوشتن، زمان برای تبدیل داده ها از نمایش نمادین به داخلی و برگشتی تلف نمی شود و ثانیاً دقت اعداد واقعی از بین نمی رود. همانطور که در مورد ورودی / خروجی فرمت شده، و در مورد ورودی / خروجی باینری، برای پردازش "صحیح" اطلاعات از فایل، لازم است بدانید که چه نوع داده هایی، چگونه و با چه ترتیبی نوشته شده اند. یک فایل باینری، به خصوص از زمانی که مشاهده یک فایل باینری با استفاده از ویرایشگر متنچیزی نخواهد داد

    مثالی را در نظر بگیرید که نشان می دهد عناصر عدد صحیح از یک آرایه پویا در یک فایل باینری و خواندن آنها از این فایل را نشان می دهد.

    #عبارتند از

    #عبارتند از

    #عبارتند از

    با استفاده از namespace std.

    کوت<< "Vvedite kol-vo elementov celochisl. massiva: "; cin >> N;

    int * mas = int جدید [N];

    برای (i = 0; i

    کوت<< " Vvedite " << i << "-i element: "; cin >> mas [i];

    کوت<< "\nIdet zapis dannyh v fail..." << endl;

    ofstream fout ("c: \\ os \\ bin.dat"، ios :: باینری)؛// ايجاد كردن بیرون جریان باینری

    if (! fout) (cout<< "\n Oshibka otkrytiya faila!"; getch(); return 1; }

    fout.write (reinterpret_cast (mas)، N * sizeof (int));// آرایه را در فایل بنویسید

    fout.close ();// جریان را ببندید

    کوت<< "Dannye uspeshno zapisany!" << endl;

    برای (i = 0; i

    ifstream fin ("c: \\ os \\ bin.dat"، ios :: باینری)؛ // یک جریان برای خواندن فایل ایجاد کنید

    if (! fin) (cout<< "\n Oshibka otkrytiya faila!"; getch(); return 1; }

    کوت<< "Fail sodergit:" << endl;

    fin.read (reinterpret_cast (mas)، N * sizeof (int));// خواندن آرایه از فایل

    برای (i = 0; i

    گچ (); بازگشت 0;

    در این برنامه باید به استفاده از توابع نوشتن () (روش) توجه شود کلاس خارج از جریان) و () (روش کلاس ifstream) را بخوانید. این توابع به داده ها بر حسب بایت فکر می کنند و برای انتقال تعداد مشخصی از بایت ها از بافر داده به یک فایل و بالعکس طراحی شده اند. پارامترهای این توابع آدرس بافر و طول آن بر حسب بایت است.

    تابع نوشتن () طراحی شده است تا تعداد بایت های مشخص شده در پارامتر دوم را از مقدار مشخص شده در پارامتر اول در یک فایل بنویسد. آدرس هابافر داده، و تابع read () برای خواندن داده ها از یک فایل است. در اینجا لازم به ذکر است که این توابع فقط بر روی یک بافر داده از نوع char کار می کنند. در همین راستا در این برنامه از عملگر استفاده کردیم reinterpret_cast<> که بافر داده ما را از نوع int (mas) به بافری از نوع char تبدیل می کند.

    باید به خاطر داشت که نوع ریخته گری با استفاده از اپراتور reinterpret_cast فقط در مواردی ضروری است که اولین پارامتر توابع باشدنوشتن () وخواندن () یک آرایه کاراکتر نیست (در نهایت یک کاراکتر از نوعکاراکتر فقط 1 بایت طول می کشد).علاوه بر این، اگر نیاز به نوشتن یا خواندن نه یک آرایه، بلکه متغیرهای جداگانه باشد، باید از مکانیزم مرجع (ارجاع به آدرس بافر داده) استفاده کنید، به عنوان مثال:

    ofstream fout (نام فایل، iOS :: برنامه | ios :: باینری)؛

    fout.write (reinterpret_cast (& cb)، sizeof (float))؛

    حال لازم است پارامتر دوم توابع در نظر گرفته شده را مورد بحث قرار دهیم. در این برنامه به عنوان پارامتر دوم از عبارت N * sizeof (int) استفاده کردیم که با آن تعداد بایت ها را محاسبه کردیم. به عنوان مثال، اگر 5 عنصر آرایه صحیح داشته باشیم، تعداد بایت ها 20 خواهد بود. تابع sizeof () تعداد بایت های تخصیص داده شده برای نوع داده تعیین شده به عنوان پارامتر را برمی گرداند. به عنوان مثال اندازه ( بین المللی) برمی گردد 4.

    بنابراین، برنامه نشان داده شده در این مثال به شما این امکان را می دهد که داده ها را به صورت باینری در فایل bin.dat بنویسید و آنها را از این فایل باینری بخوانید. علاوه بر این، پس از خواندن، این داده ها به نوع int تبدیل می شوند، ساختار یک آرایه را به دست می آورند و هر عملیاتی را می توان با آن انجام داد.

    حال تصور کنید که باید برنامه ای بنویسید که به شما امکان خواندن داده ها از فایل bin.dat را می دهد و فقط می دانیم که این فایل حاوی عناصر یک آرایه عدد صحیح به صورت باینری است. تعداد عناصر ثبت شده (ن ) ما نمی دانیم... هنگام ایجاد یک برنامه، ما حق نداریم از یک آرایه ثابت استفاده کنیم. در مرحله ایجاد برنامه برای آن حافظه اختصاص دهید. این منجر به یک نتیجه اشتباه خواهد شد. از آنجایی که مقدار بسیار کوچک N منجر به این واقعیت می شود که همه عناصر آرایه شمارش نمی شوند و مقدار بسیار زیاد N منجر به پر کردن سلول های اضافی با مقادیر تصادفی می شود.

    نمونه ای از برنامه ای را در نظر بگیرید که به شما امکان می دهد با تخصیص دینامیک حافظه عناصر یک آرایه عدد صحیح را از یک فایل باینری بخوانید و برای اثبات واقعی بودن داده های خوانده شده، مجموع آنها را محاسبه کنید.

    #عبارتند از

    #عبارتند از

    #عبارتند از

    با استفاده از namespace std.

    int N, i, sum = 0, dfb; // dfb - طول فایل بر حسب بایت

    ifstream fin ("c: \\ os \\ bin.dat"، ios :: باینری);

    if (! fin) (cout<< "Oshibka otkrytiya faila!"; getch(); return 1; }

    fin.seekg (0, ios :: end);// موقعیت خواندن را در انتهای فایل تنظیم کنید (از انتهای 0 بایت)

    dfb = fin.tellg ();// مقدار موقعیت انتهای فایل را دریافت کنید (بر حسب بایت)

    N = dfb / 4;// با دانستن اینکه یک عدد صحیح 4 بایت می گیرد، تعداد اعداد را محاسبه کنید

    int * arr = int جدید [N];// ایجاد یک آرایه پویا

    fin.seekg (0, ios :: beg);// قبل از خواندن داده ها، موقعیت فعلی را به ابتدای فایل منتقل می کنیم

    fin.read (reinterpret_cast (arr)، dfb؛

    کوت<< "Iz faila schitano " << N << " elementov:" << endl;

    برای (i = 0; i

    برای (i = 0; i

    کوت<< "\n Ih summa = " << sum;

    گچ (); بازگشت 0;

    اجازه دهید این برنامه را با جزئیات در نظر بگیریم، که در آن ما به طور فعال از توابع seekg () و tellg () که متدهای کلاس ifstream هستند استفاده کردیم. در اینجا لازم به ذکر است که با هر فایلی که باز می شود، به اصطلاح موقعیت فعلی خواندن یا نوشتن مرتبط می شود... هنگامی که یک فایل برای خواندن باز می شود، این موقعیت به طور پیش فرض روی ابتدای فایل تنظیم می شود. اما اغلب اوقات لازم است موقعیت را به صورت دستی کنترل کنید تا بتوانید بخوانید و بنویسید، از یک مکان دلخواه در فایل شروع کنید. توابع seekg () و tellg () به شما این امکان را می دهند که نشانگر خواندن فعلی را تنظیم و بررسی کنید، و توابع seekp () و tellp () همین کار را برای نشانگر نوشتن انجام می دهند.

    روش seekg (1_parameter، 2_parameter) موقعیت خواندن فعلی را از فایل با تعداد بایت های مشخص شده در 1_parameter نسبت به مکان مشخص شده در 2_option منتقل می کند. 2_parameter می تواند یکی از سه مقدار را بگیرد:

    ios :: beg - از ابتدای فایل;

    ios :: cur - از موقعیت فعلی.

    ios :: end - از انتهای فایل.

    در اینجا beg، cur و end ثابت هایی هستند که در کلاس ios تعریف شده اند و نمادهای :: یک عملیات دسترسی به این کلاس را نشان می دهند. مثلا اپراتور fin.seekg (-10، ios :: end);به شما امکان می دهد موقعیت خواندن فعلی را از فایل 10 بایت قبل از پایان فایل تنظیم کنید.

    حالا برگردیم به توضیحات برنامه. با توجه به اینکه تعداد اعداد نوشته شده در فایل را نمی دانیم، ابتدا باید تعداد اعداد را دریابیم. برای انجام این کار، با استفاده از fin.seekg (0, ios :: end);به انتهای فایل می رویم و از تابع tellg () برای برگرداندن طول فایل بر حسب بایت به متغیر dfb استفاده می کنیم. تابع tellg () موقعیت فعلی اشاره گر را بر حسب بایت برمی گرداند. از آنجایی که طول یک عدد صحیح را بر حسب بایت (4 بایت) می دانیم، محاسبه تعداد اعداد نوشته شده در فایل با دانستن طول فایل بر حسب بایت آسان است. N = dfb / 4;). پس از فهمیدن تعداد اعداد، یک آرایه پویا ایجاد می کنیم و به ابتدای فایل می رویم تا با استفاده از تابع read () شروع به خواندن داده ها کنیم. پس از اینکه تعداد مشخصی از بایت های داده (dfb) به بافر داده (arr) منتقل شد، داده های خوانده شده در این روش ساختار یک آرایه را به دست می آورند و برای هر نوع عملیات و تبدیل کاملاً مناسب می شوند.

    فایل ها. در عین حال، از نظر پیاده سازی فنی در سطح سخت افزار، فایل های متنی یک مورد خاص از فایل های باینری هستند و بنابراین، در معنای وسیع کلمه، هر فایلی برای تعریف «باینری» مناسب است. فایل".

    فایل های باینری اغلب به عنوان فایل های اجرایی و داده های فشرده شناخته می شوند، اما محدود کردن این مفهوم نادرست است.

    تجسم

    برای نمایش تصویری یک فایل باینری، آن را به تکه‌هایی با اندازه مساوی تقسیم می‌کنند که به صورت اعداد نمایش داده می‌شوند، معمولاً به صورت هگزادسیمال، گاهی اوقات به صورت هشت‌گانه، باینری یا اعشاری نوشته می‌شوند. اندازه قطعه مشخص شده می تواند یک اکتت، و همچنین دو یا چهار باشد (در صورت تقسیم به تکه های چند هشتگانه، ترتیب بایت های پلت فرم مورد استفاده اعمال می شود). وابستگی محدوده اعداد نمایش داده شده به اندازه قطعه در جدول نشان داده شده است:

    هشت ها تعداد بیت ها هگزادسیمال هشتی اعشاری
    بدون امضا
    اعشاری
    نمادین
    1 8 00

    FF
    000

    377
    0

    255
    -128

    127
    2 16 0000

    اففف
    000000

    177777
    0

    65535
    -32768

    32767
    4 32 00000000

    FFFFFFFF
    00000000000

    37777777777
    0

    4294967295
    -2147483648

    2147483647

    اغلب، علاوه بر مقادیر عددی بایت ها، کاراکترهای صفحه کد نیز نمایش داده می شوند، به عنوان مثال، نویسه های ASCII چاپ شده در سمت راست) ابتدای فایل PNG آرم ویکی پدیا:

    00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 | .PNG ........ IHDR | 00000010 00 00 00 87 00 00 00 a0 08 03 00 00 00 11 90 8f | ................ | 00000020 b6 00 00 00 04 67 41 4d 41 00 00 d6 d8 d4 4f 58 | ..... gAMA ..... OX | 00000030 32 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 | 2 .... tEXtSoftwar | 00000040 65 00 41 64 6f 62 65 20 49 6d 61 67 65 52 65 61 | e.Adobe ImageRea | 00000050 64 79 71 c9 65 3c 00 00 03 00 50 4c 54 45 22 22 | dyq.e<....PLTE""| 00000060 22 56 56 56 47 47 47 33 33 33 30 30 30 42 42 42 |"VVVGGG333000BBB| 00000070 4b 4b 4b 40 40 40 15 15 15 4f 4f 4f 2c 2c 2c 3c |[ایمیل محافظت شده]@@ ... OOO،<| 00000080 3c 3c 3e 3e 3e 3a 39 39 04 04 04 1d 1d 1d 35 35 |<<>>>: 99 ...... 55 | 00000090 35 51 50 50 37 37 37 11 11 11 25 25 25 0d 0d 0d | 5QPP777 ... %%% ... | 000000a0 27 27 27 1a 1a 1a 38 38 38 2a 2a 2a 08 08 08 20 | "" "... 888 *** ... | 000000b0 20 20 17 17 17 8 2e bb | .............. |

    ابزار

    برای تجسم

    • اشکال زدایی (در مایکروسافت ویندوز، تا حدی)
    • hexdump (در گنو / لینوکس و غیره)

    برای ویرایش

    ادبیات

    • فرهنگ لغت اصطلاحات کامپیوتری دنیای جدید وبستر، چهارم. Ed, Prentice Hall, NY, 1992. ISBN 0-671-84651-5
    • فرمت های فایل Leontyev B.K Microsoft Windows XP: Handbook، Moscow: ZAO "New Publishing House"، 2005. ISBN 5-9643-0059-6

    بنیاد ویکی مدیا 2010.

    ببینید «فایل باینری» در فرهنگ‌های دیگر چیست:

      Noun., M., Uptr. رجوع کنید به اغلب مورفولوژی: (نه) چی؟ فایل، نه؟ فایل، (نگاه کنید به) چه چیزی؟ فایل از؟ فایل، چطور؟ در مورد فایل؛ pl چی؟ فایل ها، (نه) چی؟ فایل ها از؟ فایل ها، (نگاه کنید به) چه چیزی؟ فایل ها از؟ فایل ها، چطور؟ درباره فایل ها 1. آرایه ای به نام فایل ... ... فرهنگ لغت توضیحی دیمیتریف

      فایل باینری (دودویی) به معنای وسیع: دنباله ای از بایت های دلخواه. این نام به این دلیل است که بایت ها از بیت ها، یعنی ارقام باینری (باینری انگلیسی) تشکیل شده اند. در معنای محدود کلمه، فایل های باینری در مقابل فایل های متنی قرار می گیرند. ... ... ویکی پدیا

      فایل باینری (دودویی) به معنای وسیع: دنباله ای از بایت های دلخواه. این نام به این دلیل است که بایت ها از بیت ها، یعنی ارقام باینری (باینری انگلیسی) تشکیل شده اند. در معنای محدود کلمه، باینری ها در مقابل ... ... ویکی پدیا

      فایل پیکربندی- یک فایل باینری یا متنی حاوی اطلاعاتی که رفتار برنامه، رایانه یا دستگاه شبکه را تعیین می کند. فایل پیکربندی موضوعات شبکه محاسباتی EN ... راهنمای مترجم فنی

      این اصطلاح معانی دیگری دارد، به IPA (ابهام‌زدایی) مراجعه کنید. .IPA فرمت فایل آرشیو اپلیکیشن اپل برای iPhone، iPod Touch و iPad است. فایل هایی با این پسوند در اپ استور ذخیره می شوند و با استفاده از iTunes برای ... ... ویکی پدیا دانلود می شوند

      این مقاله یا بخش نیاز به بازبینی دارد. در پاسکال هیچ ماژول، OOP و سایر روندهای جدید وجود ندارد. توضیحات پسوندها باید فقط در مقالات مربوط به ... ویکی پدیا وجود داشته باشد

      معناشناسی پاسکال: رویه ای نوع اجرا: کامپایلر معرفی شده در: 1970 نویسنده (ها): نیکلاوس ویرث پاسکال یک زبان برنامه نویسی سطح بالا همه منظوره است. یکی از معروف ترین زبان های برنامه نویسی، به طور گسترده ... ... ویکی پدیا

      نام Gopher: Gopher Port / ID: 70 / TCP مشخصات: RFC 1436 پیاده سازی های اولیه (کلاینت): Mozilla Firefox، Microsoft Windows: IE 5.x، IE 6 (MS limited) ... ویکی پدیا

      نام: پورت Gopher / شناسه: 70 / مشخصات TCP: RFC 1436 پیاده سازی های اساسی (سرویس گیرندگان): موزیلا فایرفاکس، مایکروسافت ویندوز: اینترنت اکسپلورر 5.x، اینترنت اکسپلورر 6 (MS محدود) پروتکل شبکه Gopher برای جستجو و انتقال توزیع شده ... ... ویکیپدیا

      - / * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z توجه: از آنجایی که پسوند نام فایل می تواند هر چیزی باشد، لیست کامل نیست ... ویکی پدیا

    مقالات مرتبط برتر