PDA

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



polpolaki
دوشنبه 27 آذر 1391, 09:37 صبح
سلام
می خوام کد باینری یک فایل رو (کد صفرو یک) تو یک notepad بریزم
کسی می تونه به من کمک کنه
ممنون میشم کمکم کنید
یه عالمه گشتم اما چیزی پیدا نکردم

polpolaki
دوشنبه 27 آذر 1391, 10:19 صبح
یکی به من کمک می کنه

polpolaki
دوشنبه 27 آذر 1391, 10:45 صبح
یکی کمک کنه :گریه:

مهرداد صفا
دوشنبه 27 آذر 1391, 10:57 صبح
سلام
1- تمام بایتهای فایل را در یک آرایه بخوانید.
2- به ازای هر بایت که در آرایه وجود دارد مراحل زیر را تکرار کنید.
3- n را معادل بایت قرار دهید.
4- x را معادل 128 قرار دهید.
5- n را بر xتقسیم کنید و خارج قسمت را (که یا 0 است یا 1) به نتیجه اضافه کنید.
6- n را معادل باقیمانده تقسیم n بر x قرار دهید.
7- x را معادل x تقسیم بر دو قرار دهید.
8- تا زمانی که x بزرگتر یا مساوی 1 است (8 بار) مراحل 5 و 6و 7 را تکرار کنید.



به این صورت:

//in the name of god
//صل الله علی محمد و آله
int c = 0;//the counter
string bin = "";//result
byte[] bytes = System.IO.File.ReadAllBytes("filename");//get all bytes of file
foreach (byte b in bytes)
{
int n = b;
for (int i = 128; i >= 1; i /= 2)
{
bin+= (n / i).ToString();
n = n % i;
}
bin+= Environment.NewLine;
if (C++‎‎ % 100 == 0)//invoke DoEvent for each 100 bytes and report the perSentage
{
this.Text = ((100 * c) / bytes.Length).ToString() + "% completed...";//report the perSentage
Application.DoEvents();//keep application responcing
}
}
System.Media.SystemSounds.Exclamation.Play();//alarm completing
textBox1.Text = bin;

polpolaki
دوشنبه 27 آذر 1391, 15:37 عصر
ببخشید خیلی ممنون از راهنماییتون من این کارو کردم
اما هیچ جوابی دریافت نکردم و اگر یک فایل حجمش 3 یا 4 مگ باشه خیلی طول میکشه
اگر بازهم راهنمایی کنید ممنون می شم

مهرداد صفا
دوشنبه 27 آذر 1391, 21:05 عصر
ببخشید خیلی ممنون از راهنماییتون من این کارو کردم
اما هیچ جوابی دریافت نکردم و اگر یک فایل حجمش 3 یا 4 مگ باشه خیلی طول میکشه
اگر بازهم راهنمایی کنید ممنون می شم


بله. مدت پردازش (بسته به طول فایل) خیلی زیاد میشود که در این مورد نظری ندارم.
بسته به کاری که قصد انجامش را دارید، در پیاده سازی این نوع الگوریتم، با استفاده از unsafe code یا با یک زبان سطح پاینتر مثل C++ یا assembly احتمالا سرعت پردازش بهتری داشته باشید