PDA

View Full Version : سوال در مورد فایل های باینری و تکست(فایل های دودویی و متنی)



user1101
پنج شنبه 09 مهر 1388, 22:15 عصر
سلام، ببخشید یه سوال می خوام بپرسم که ممکنه خیلی پیش افتاده باشه
ببینید این چیزی که من راجع به تفاوت فایل ها باینری و تکست (فایل های دودویی و متنی)فهمیدم درسته:
"در هنگام ذخیره ی یک عدد در فایل باینری اون عدد به شکل معادل باینریش در فایل ذخیره می شه ، اما در هنگام ذخیره ی اون عدد در یک فایل تکست اون عدد به شکل کدهای اسکی ارقامش(وقتی به شکل کاراکتر بهشون نگاه شه) ذخیره می شه و در هنگام ذخیره ی کارکتر ها این دو فایل هیچ تفاوتی با هم ندارن و هر دو اون ها رو به صورت کدهای اسکی ذخیره می کنن"

مثلا 10 در فایل باینری بصورت: 1010 ذخیره می شه و در فایل تکست به صورت 110001 , 110000

user1101
شنبه 11 مهر 1388, 21:12 عصر
دوستان نظری نداشتید؟!

sepehrst
یک شنبه 12 مهر 1388, 03:15 صبح
بله درسته

البته نحوه ذخیره سازی در معماریهای مختلف متفاوته
دو نوع نحوه ذخیره سازی وجود داره little endian و big endian. در little endian بایتهای با ارزش مکانی کمتر، اول و بایتهای با ارزش مکانی بالاتر به ترتیب پشت سر آن ذخیره مشوند. در big endian کاملا برعکس عمل میشه و اعداد به همان ترتیبی که نوشته میشوند ذخیره میشوند. در معماری x86، یعنی همین که من و شما استفاده میکنیم از little endian استفاده میشه.
برای همین مثالی که در ادامه مینویسم بر اساس نحوه ذخیره سازی little endian هست.

البته همه فایلها در نهایت باینری هستند و نوع فایل بستگی به نحوه پردازش و تفسیراون فایل داره. من برای سادگی و درک بهتر، اعداد رو بجای مبنای 2 در مبنای 16 مینویسم.
مثلا در مورد ذخیره سازی عدد 14295368: ( با فرض اینکه ترتیب دسترسی به حافظه از چپ به راست باشه)


14295348 =00 DA 21 48(hex) ----> (Little Endian In Memory) = 48 21 DA 00

فضایی که برای ذخیره این عدد نیاز هست 4 بایته
حالا اگر همین عدد 8 رقمی را بشکل کاراکتر ذخیره کنیم (Text)، برای هر کاراکتر یا رقم نیاز به یک بایت هست که میشه 8 بایت که بشکل زیر ذخیره میشه: (ترتیب دسترسی به حافظه از چپ به راست - اعداد حافظه در مبنای 16)


14295368 ------>(In Memory)= 31 34 32 39 35 33 36 38