PDA

View Full Version : حرفه ای: خواندن و ذخیره کردن فایل به صورت هگز.



Reza-HNA
شنبه 21 تیر 1393, 01:34 صبح
سلام به همگی انشاالله نماز روزه هاتون قبول باشه.
یه برنامه دارم مینویسم که فایل رو به صورت هگز باز میکنه یه سری تغییرات روش انجام میده و بعدش سیوش میکنه ( مثل برنامه Hex workshop یا WinHex و ...) توی خوندن فایل و انجام تغییرات مشکلی ندارم مشکلم توی ذخیره اون هست.
این کدم برای خوندن فایل به صورت هگز:

rtb.Text = String.Join(" ", IO.File.ReadAllBytes("c:\1.3ds").Select(Function(b) b.ToString("X2")))
rtb.Text = Replace(rtb.Text, "FF EE 20 36", "FF EE 00 20")


روش سریع تری هم برای این کار هست؟ اصلا روشی هست نخوام توی richtextbox نمایشش بدم چون نمیخوام کاربر کد هگز رو ببینه.

حالا نحوه ذخیره فایل چطوریه؟
این برنامه رو توی vb6 نوشتم و کاملا کار میکرد ولی اونجا سرعت خیلی پایین بود یه فایل 4 مگی رو به سختی توی 30 ثانیه به صورت هگز باز میکرد تغییرات رو انجام میداد و سیوش میکرد.کلا سرعت خیلی برام مهمه! خیلی هم توی انجمن سرچ کردم ولی چیز بدرد بخوری پیدا نکردم.
آیا کسی هست مرا در این امر نیکو یاری دهد؟:لبخند:

Reza-HNA
شنبه 21 تیر 1393, 16:30 عصر
یعنی سوالای من انقدر سخته که هیچکس حتی یه نظر هم نمیده!:گریه:

مهرداد صفا
یک شنبه 22 تیر 1393, 14:20 عصر
سلام. طاعات قبول.
اولا وقتی نیاز نیست که کاربر اطلاعات رو مشاهده کنه، چرا داخل textBox نمایش دادید؟ داخل یک string نگهداری کنید.
ثانیا برای ذخیره کردن:

Dim hex As String = String.Join(" ", IO.File.ReadAllBytes(fileName).Select(Function(b) b.ToString("X2")).ToArray)
hex = hex.Replace("FF EE 20 36", "FF EE 00 20")
Dim bytes As Byte() = hex.Split(New Char() {" "}, StringSplitOptions.RemoveEmptyEntries).Select(Func tion(h) CByte("&h" + h)).ToArray()
IO.File.WriteAllBytes(fileName, bytes)

Reza-HNA
یک شنبه 22 تیر 1393, 17:45 عصر
سلام. طاعات قبول.
اولا وقتی نیاز نیست که کاربر اطلاعات رو مشاهده کنه، چرا داخل textBox نمایش دادید؟ داخل یک string نگهداری کنید.
ثانیا برای ذخیره کردن:

Dim hex As String = String.Join(" ", IO.File.ReadAllBytes(fileName).Select(Function(b) b.ToString("X2")).ToArray)
hex = hex.Replace("FF EE 20 36", "FF EE 00 20")
Dim bytes As Byte() = hex.Split(New Char() {" "}, StringSplitOptions.RemoveEmptyEntries).Select(Func tion(h) CByte("&h" + h)).ToArray()
IO.File.WriteAllBytes(fileName, bytes)


نمیشد با یک دکمه تشکر لطفتون رو پاسخ بدم! واقعا ممنون :قلب:
انقدر حواسم درگیر ذخیرش بود اصلا به فکر رشته استرینگ نیفتادم :گیج: