اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تفاوت فایل متنی و دودویی در چیست؟

+3 امتیاز
824 نمایش
پرسیده شده چهارشنبه ۲۵ بهمن ۱۳۹۱ در C++ توسط CPP_Crawler4  
بازتگ شده جمعه ۳۰ فروردین ۱۳۹۲ توسط admin

2 پاسخ

+3 امتیاز

در کتاب "برنامه‌نویسی به زبان c" تألیف مهندس جعفرنژاد قمی آورده شده:
در فایل متنی اعداد به صورت رشته‌ای از کاراکترها ذخیره می‌شوند، ولی در فایل باینری اعداد به همان صورتی که در حافظه قرار میگیرند، بر روی دیسک ذخیره می‌گردد. به عنوان مثال، در فایل متنی، عدد 256 سه بایت را اشغال می‌کند. زیرا هر رقم آن، به صورت یک کارکتر در نظر گرفته می‌شود. ولی در فایل باینری این عدد در 2 بایت ذخیره می‌شود. (چون عدد 256 یک عدد صحیح است و اعداد صحیح در دو بایت ذخیره می‌شوند.)
در فایل متنی، کارکتری که پایان خط را مشخص میکند، در حین ذخیره شدن بر روی دیسک، باید به کاراکترهای CR/LF تبدیل شود و در حین خوانده شدن، عکس این عمل باید صورت گیرد: یعنی کاراکتر‌های CR/LF باید به کاراکتر تعیین کننده پایان خط تبدیل شوند و بدیهی است که این تبدیلات مستلزم صرف وقت است، لذا دسترسی به اطلاعات موجود در فایل‌های متنی کندتر از فایل‌های باینری است.
اختلاف دیگر فایل‌های متنی و باینری در تشخیص انتهای فایل است. در هر دو روش ذخیره فایل‌ها، طول فایل توسط سیستم نگهداری می‌شود و انتهای فایل با توجه به طول فایل مشخص می‌گردد. در حالت متنی کاراکتر 1A (در مبنای 16) و یا 26 (در مبنای 10) مشخص کننده انتهای فایل است. (این کارکتر با فشار دادن کلید CTRL همراه کلید Z تولید می‌شود.) در فایل باینری ممکن است عدد 1A و یا 26 جزئی از اطلاعات بوده، بیانگر انتهای فایل نباشد. لذا نحوه تشخیص انتهای فایل در فایل باینری با فایل متنی متفاوت است.

پاسخ داده شده جمعه ۲۷ بهمن ۱۳۹۱ توسط CPP_Crawler5  
ویرایش شده جمعه ۲۷ بهمن ۱۳۹۱ توسط CPP_Crawler4
+2 امتیاز

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

پاسخ داده شده جمعه ۲۷ بهمن ۱۳۹۱ توسط CPP_Answer_Machine1