PDA

View Full Version : سوال: ذخیره ارایه ای از بایت ها به صورت باینری در بانک اطلاعاتی و کاربرد memorystream



mirbehnam2
یک شنبه 02 شهریور 1393, 16:08 عصر
با سلام ببخشید من یک سوال داشتم
چرا برای اینکه تصویری رو به صورت باینری توی بانک اطلاعاتی ذخیره کنیم باید اونو به ارایه بایت تغییر بدیم اصلا بایت و باینری چه رابطه ای با هم دارند
یا برای اینکه تصویری رو به base64 تبدیل کنیم اول باید به ارایه ای از بایت ها تبدیل کنیم
و اینکه ایا مموری استریم فایلو به استریم تبدیل می کنه ؟
خوب تفاوتش با خود استریم چیه ؟چرا نمی شه این کارو با استریم ریدر انجام داد ؟
امیدورام یکی بتونه این چیزای مبهمو توی ذهنم روشن کنه ممنون

plus
یک شنبه 02 شهریور 1393, 17:02 عصر
1. Binary Data http://en.wikipedia.org/wiki/Binary_data
داده های باینری یعنی داده هایی که از 0 و 1 تشکیل شدن. بنا به دلایلی، در سیستم های کامپیوتری، اغلب بجای نگه داری داده ها به صورت یک سری 0 و 1(بیت)، اونها رو در واحد های 8 تایی به نام بایت نگه داری میکنن.در این حالت داده باینری به صورت تعدادی بایت در نظر گرفته میشه.
در زبان های برنامه نویسی هم برای نگه داری اطلاعات یک بایت نوع داده ای مثل byte در #C تعریف میشه.برای نگه داری تعدادی مقدار از یک نوع داده هم، نوع آرایه تعریف میشه.وقتی نوع داده ای که آرایه نگه میداره، byte باشه شما آرایه ای از بایت خواهید داشت که با این امکان شما میتونید در یک زبان برنامه نویسی، داده های باینری رو در حافظه در این قالب آرایه ای از بایت تعریف و نگه داری کنید.
سیستم های مدیریت دیتابیس هم امکان نگه داری داده باینری رو به صورت تعدادی بایت ارائه میدن.حالا وقتی قراره یک تصویر رو در #C به دیتابیس بفرستید، اون عکس باید در قالب تعدادی بایت ارسال بشه، که در #C عکس باید به صورت آرایه از بایت در بیاد و به دیتابیس فرستاد.واسطی که بین #C و دیتابیس قرار داره، داده ها رو به صورت آرایه از بایت از #C دریافت میکنه و به نوع قابل فهم دیتابیس تبدیل و ارسال میکنه.
2. Base64 http://en.wikipedia.org/wiki/Base64
هم که کارش تبدیل داده باینری به رشته و بالعکس هست، داده های باینری رو در همون قالب 8 تایی (byte) در نظر میگیره. بنابرین شما هر داده باینری رو که قرار باشه به رشته base64 تبدیل کنید باید در قالب تعدادی از بایت باشه، بنابراین باید ابتدا تصویر رو به صورت تعدادی بایت (که در #C رایج ترینیش همون آرایه ای از بایت هست) تبدیل کنید...
3. Stream http://en.wikipedia.org/wiki/Stream_(computing)
Stream به معنای جریان یا توالی ای از داده ها هست که لزوما همه اونها یکجا آماده نیستن.برای مثال وقتی شما یک FileStream دارین، کل داده ها روی دیسک هست وقتی شما بوسیله Stream شروع به خوندن یک قسمت از فایل میکنید، فقط اون قسمت از فایل، از دیسک به حافظه میاد و در دسترس شما قرار میگیره.در این حالت نیازی نیست که کل فایل یکجا به حافظه بیاد...
MemoryStream یک نوع Stream هست، که منبع داده ها در خود حافظه هست.وقتی شما داده ای (مثلا آرایه از بایت) در حافظه دارین و در طرف دیگه سیستمی دارین که برای کار نیاز به یک Stream از داده ها داره، شما میتونید داده هاتون رو در قالب یک MemoryStream به اون سیستم بدین.
StreamReader همونطور که از اسمش پیداست اصلا Stream نیست و زمانی استفاده میشه که شما یک Stream (حالا یا FileStream یا MemoryStream یا هر نوع Stream دیگه) دارین که شامل داده های متنی (به صورت مجموعه ای از بایت) هست و میخواین دادههای این Stream بخونید و به رشته تبدیل کنید.