PDA

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



ma_barnamenevis
چهارشنبه 27 آذر 1392, 10:01 صبح
سلام


من تو تبدیل فایل باینری به text مشکل دارم ، اکثر کدهاییکه راجع به این قضیه دراوردم فایل رو به هزار جور فرمت دیگه تبدیل می کنه که textنیستن ، نمونه کدهام و نمونه فایل باینری رو می زارم ، ممنون می شم کمک کنید:





Byte[] utf8Bytes =


RawEncoding.GetBytes(FromUTF8ByteArray(GetDocument ("F:\\temp\\bineryfile.T002801")));


Byte[] finalBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode,utf8Bytes);


string _s = Convert.ToBase64String(finalBytes);


string fileName = "F:\\temp\\test.txt";


FileStream fst = new FileStream(fileName, FileMode.Create);


fst.Write(finalBytes, 0, finalBytes.Length);


fst.Flush();


fst.Close();





یا





string myString;


using (FileStream fs = new FileStream("F:\\temp\\bineryfile.T002801", FileMode.Open))


using (BinaryReader br = new BinaryReader(fs))


{


byte[] bin = br.ReadBytes(Convert.ToInt32(fs.Length));


myString =


Convert.ToBase64String(bin);


}

مهرداد صفا
چهارشنبه 27 آذر 1392, 11:17 صبح
با سلام.


//read binary and convert it to base64 string
string text = Convert.ToBase64String(System.IO.File.ReadAllBytes (fileName));
//rewrite string to same file.
System.IO.File.WriteAllBytes(fileName , Convert.FromBase64String(text));

ma_barnamenevis
چهارشنبه 27 آذر 1392, 11:55 صبح
ممنون از راهنماییتون ولی محتویات فایل ساخته شده خروجی با ورودی یکسان است و تغییر فرمت به text انجام نمیشه !
من این کدام بهش اضافه کردم بازم نشد

Byte

[] finalBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, Convert.FromBase64String(text));

مهرداد صفا
چهارشنبه 27 آذر 1392, 13:06 عصر
خواهش می کنم.
اگر قصد دارید یک فایل رو به صورت UTF8 بخوانید:


System.IO.File.WriteAllText(fileName, "تست");
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
var bytes = System.IO.File.ReadAllBytes(fileName);
textBox1.Text = encoder.GetString(bytes, 0, bytes.Length);

ma_barnamenevis
چهارشنبه 27 آذر 1392, 13:21 عصر
نه در اصل تبدیل یک فایل باینری به text مهمه ، گفتم شاید encoding کنم درست شه ، ولی نشد

rahnema1
چهارشنبه 27 آذر 1392, 14:32 عصر
نمی دونی اصلا تکست بوده یانه؟ فکر کنم تصویر بوده

مهرداد صفا
چهارشنبه 27 آذر 1392, 14:44 عصر
نه در اصل تبدیل یک فایل باینری به text مهمه ، گفتم شاید encoding کنم درست شه ، ولی نشد

لطفا دقیقتر منظورتون رو از text عنوان کنید. ascii یا utf یا base64؟
و همینطور هدف کلی خودتون رو؟

ma_barnamenevis
چهارشنبه 27 آذر 1392, 14:49 عصر
خروجی text هست ، convert شده فایل با کد java بصورت زیر :
2111111733009|92092600231602537679|920926|LL04|02| +000000018000000|8888|253|BBB |C|17 |O| |920926|002551|0253|7679| 537679 3491 17 | 6037691069624005 3491 17 | |+000000020952355
کد java :

Writer
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName+"utf"), "UTF-8"))

rahnema1
چهارشنبه 27 آذر 1392, 14:58 عصر
اگه با انکدینگ IBM500 بزنی اینجور میشه فکر کنم اونهایی که با IBM EBCDIC شروع میشه جواب میده

0100000733009!92092600231602537679!920926!TM04!02! +000000018000000!8888!253!ATM !C!17 !O! !920926!002551!0253!7679! 537679 3491 17 ! 6037691069624005 3491 17 ! !+0000000209523550200002943008!9209260024060511181 1!920926!PM02!02!-000000000020000!8888!291!MOBILE !D!93 !O! !920926!002640!0511!1811! 111811 0007 93 ! / ! !+000000000929034

ma_barnamenevis
چهارشنبه 27 آذر 1392, 15:08 عصر
درسته همینه ، لطف می کنید کدتون رو بزارین

rahnema1
چهارشنبه 27 آذر 1392, 15:33 عصر
درسته همینه ، لطف می کنید کدتون رو بزارین
همون کدی که آقای مهرداد صفا گذاشتن دیگه با یه تغییر کوچولو


Encoding enc=Encoding.GetEncoding(37);
var bytes = System.IO.File.ReadAllBytes(Application.StartupPat h+@"\bineryfile.T002801");
richTextBox1.Text = enc.GetString(bytes, 0, bytes.Length);