PDA

View Full Version : نوشتن باینری و بیت به بیت در فایل



icmaster
یک شنبه 12 تیر 1384, 13:10 عصر
سلام
من میخوام مثلا عدد 3 که بصورت باینری 11 میشه رو تو یه فایل ذخیره کنم طوری که اندازه فایل 2 بیت بشه نه دو یا یک بایت(یعنی 16 بیتی یا 8 بیتی نشه و فقط همون 2 بیت ذخیره بشه) چی کار کنم؟

sh_roohani
یک شنبه 12 تیر 1384, 17:43 عصر
راستش تا جایی که من اطلاع دارم، هر فایل دست کم یه بلوک روی دیسک رو اشغال می کنه. مثلا یه سکتور 512 بایتی. بعد هم همه توابع نوشتن و خواندن فایل که من تا حالا دیدم، اندازه رو بر حسب بایت می گیرن و نه بر حسب واحدی کوچکتر از اون.
شما می تونین با استفاده از توابع سطح پایین بایوس محتوای یه بایت رو (به صورت غیر مستقیم) روی دیسک تغییر بدین. یعنی یه سکتور رو لود کنین، یه بایت رو با اپراتورهای بیتی تغییر بدین و دوباره اون سکتور رو بنویسین. اما واسه نوشتن فایلی با اندازه ای کوچکتر از یه بایت فکر نمی کنم تابعی باشه.

taimaz
دوشنبه 13 تیر 1384, 00:55 صبح
اگه شما بخواهید می تونید اطلاعات کمتر از یک بایت رو هم ذخیره کنید.
این کار با ذخیره سازی با استفاده از ساختمانهای بیتی ممکن هستش.
امتحانش کن :)
اگه خواستی می تونم برات نمونش رو هم مثال بزنم. :موفق:

sh_roohani
دوشنبه 13 تیر 1384, 09:50 صبح
:strange:
یعنی واقعا اندازه فایل هم به کمتر از یک بایت کاهش پیدا می کنه؟!

icmaster
پنج شنبه 16 تیر 1384, 13:33 عصر
سلام .
من جواب سوالمو فهمیدم.
با استفاده از عملگرهای منطقی میشه در قالب بایت ، بیت به بیت نوشت.
البته نمیشه کمتر از یه بایت تو فایل نوشت ولی میشه بیتهای یه بایتو دست کاری کرد.

sh_roohani
پنج شنبه 16 تیر 1384, 14:08 عصر
بسیار خوب، منم منظورم همین بود. البته به جای عملگرهای منطقی شاید بهتر بود می گفتین عملگرهای بیتی (bitwise).