نمایش نتایج 1 تا 10 از 10

نام تاپیک: تبدیل فایل wave به hex

  1. #1

    تبدیل فایل wave به hex

    سلام
    من چطور می تونم فایل wave رو به hex تبدیل کنم
    اگه می شه منو راهنمایی کنید

  2. #2
    دوست عزیز
    برای اینکار فکر نکنم VB مناسب باشه
    بهر حال من کد به زبان C رو برات می ذارم:


    FILE *in,*out;
    char ch;
    in=fopen("c:one.wav","rb");
    out=fopen("c:tow.txt","w");
    while(!feof(in))
    {
    ch=getc(in);
    fprintf(out,"%x",ch);
    }
    fcloseall();

  3. #3
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    منظورتان را دقیق تر بگید؟؟ شما میخواهید فایل wav مورد نظر را به فایل متنی حاوی کدهای مبنای 16 تبدیل کنید ؟؟؟؟؟؟؟؟؟؟؟؟؟؟ چون در باطن کدها به صورت مبنای 16 است !!!!

    دوست عزیز، کاربر Wish Master، چرا با VB نمیشه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟ یا مناسب نیست ؟؟؟؟؟؟

  4. #4
    نظر من اینه که همیشه برای هرکاری باید از ابزار مناسبش استفاده کرد
    به قول خودم:
    نه هیچوقت با اره برقی میوه پوست بکن، نه هیچوقت با چاقو درخت قطع کن

  5. #5
    کاربر دائمی آواتار h_sadeghynejad
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Ariayee Land
    پست
    190
    i think vb.net is great on this action and every action
    the power of C#‎,C++‎ is like than vb
    is't it?
    اول اینکه دوست عزیز به انگلیسی ننویس دوم اینکه من هم موافقم برای هر کاری باید از ابزار خودش استفاده کرد و نباید با تعصب به یه چیزی چشم خودمون رو روی چیزهای دیگه ببندیم برای کار با سخت افزار , برنامه های سیستمی و برنامه های پیشرفته قدرت C خیلی بیشتر هستش و اصلا قدرت Vb قابل مقایسه با قدرت ++C , C نیستش

  6. #6
    نقل قول نوشته شده توسط Wish Master مشاهده تاپیک
    دوست عزیز
    برای اینکار فکر نکنم VB مناسب باشه
    بهر حال من کد به زبان C رو برات می ذارم:


    FILE *in,*out;
    char ch;
    in=fopen("c:one.wav","rb");
    out=fopen("c:tow.txt","w");
    while(!feof(in))
    {
    ch=getc(in);
    fprintf(out,"%x",ch);
    }
    fcloseall();
    این کدتون ایراد داره چون یک فایل 200 تا 300 کیلویی رو میکنه چندین مگابایت!
    یک فایل 270 کیلویی رو با این کد تبدیل کردم تا وسطاش که رفت فایل خروجی شده بود 277 مگابایت !

    اینم کدش با وی بی:

    Dim bytes() As Byte
    Dim output As String = ""
    Try
    bytes = File.ReadAllBytes("مسیر فایل ورودی")
    For i As Integer = 0 To bytes.Length - 1
    output += Hex(bytes(i))
    Next
    File.WriteAllText("مسیر فایل خروجی", output, System.Text.Encoding.ASCII)
    Catch ex As Exception
    MessageBox.Show(ex.ToString())
    EndTry

    این کد برای تبدیل فایل باینری به فایل متنی هگزادسیمال هستش(کاری که Hex Viewer ها انجام میدن - 8 بیت 8 بیت به Hex تبدیل میکنن).
    دوستان اگر ممنکه لطف کنند بگن خوندن نوشتن فایل و تبدیل باینری به هگزادسیمال چه فرقی در وی بی و سی داره تا ما هم یاد بگیریم!

  7. #7
    من باید دو فایل Wave رو با هم مقایسه کنم بنابرین باید به hex تبدیل کنم بعد دو تا hex رو با هم مقایسه کنم ولی کدی که Wish Master نوشتن بعد از تبدیل دوباره به wave درست عمل نمی کنه
    به نظر شما با دستورات اسمبلی راحت تر می شه به نتیجه رسید ؟

  8. #8
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    نقل قول نوشته شده توسط elaheh85_b مشاهده تاپیک
    من باید دو فایل Wave رو با هم مقایسه کنم بنابرین باید به hex تبدیل کنم بعد دو تا hex رو با هم مقایسه کنم ولی کدی که Wish Master نوشتن بعد از تبدیل دوباره به wave درست عمل نمی کنه
    به نظر شما با دستورات اسمبلی راحت تر می شه به نتیجه رسید ؟
    میخوای فایل wav را به hex تبدیل کنی که ببینی برابرند ؟؟؟؟؟؟؟؟؟
    آخرین ویرایش به وسیله titbasoft : دوشنبه 07 خرداد 1386 در 19:02 عصر دلیل: کمی توی پست هاتون آرامش خودتون رو حفظ کنید، ممنون

  9. #9
    نقل قول نوشته شده توسط elaheh85_b مشاهده تاپیک
    من باید دو فایل Wave رو با هم مقایسه کنم بنابرین باید به hex تبدیل کنم بعد دو تا hex رو با هم مقایسه کنم ولی کدی که Wish Master نوشتن بعد از تبدیل دوباره به wave درست عمل نمی کنه
    به نظر شما با دستورات اسمبلی راحت تر می شه به نتیجه رسید ؟
    میشه یه کم بیشتر توضیح بدی چی کار می خوای بکنی !

    این کدی که من در پست 6 گذاشتم اگر خروجیش رو دوباره تبدیل به باینری کنی مثل اولش میشه.

  10. #10
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    اول : دوست عزیز کاربر titbasoft ! آن یک شوخی بود نه ناشی از عصبانیت!!!!!! چرا بیچاره را پاک کردید، شدیداً کار داشتم و گفتم بعداً جواب کامل را میدهم و چون آن پست فوق العاده جالب را دیدم گفتم جوابی بدهم!

    و اما جواب سوال!
    همانطور که کاربر arsp_2004 اشاره کردند، کد ایشان با کمی تغییر قابل استفاده است ولی من دیشب و سر فرصت مطالب زیر را نوشتم.
    ---------------------------------------------------------
    من واقعاً مثل این آدمک شدم ، و فکر کنم تا چند وقت به سلمانی رفتن نیازی نداشته باشم.
    اگر صرفاً کپی ای از فایلهای متعدد دارید و میخواهید بفهمید که آیا هر دو فایل کاملاً یکسان هستند میتوانید از کد زیر استفاده کنید.
    (کر زیر اطلاعات را بلاک بلاک خوانده و مقایسه میکند و فایل هرچه قدرهم که بزرگ باشد توفیقی نمیکند!)

    Public Shared Function FileCompare(ByVal filepath1 As String, ByVal filepath2 As String) As Boolean
    Const BUFFERSIZE As Integer = 256 * 1024
    Dim buffer1(BUFFERSIZE - 1) As Byte
    Dim buffer2(BUFFERSIZE - 1) As Byte
    Dim iReaded As Integer, i As Integer
    '--------------------------------------------------
    Try
    Using fs1 As New System.IO.FileStream(filepath1, System.IO.FileMode.Open, System.IO.FileAccess.Read)
    Using fs2 As New System.IO.FileStream(filepath2, System.IO.FileMode.Open, System.IO.FileAccess.Read)
    If fs1.Length <> fs2.Length Then Return False

    iReaded = fs1.Read(buffer1, 0, BUFFERSIZE)
    If iReaded <> fs2.Read(buffer2, 0, BUFFERSIZE) Then Return False

    Do While iReaded > 0
    For i = 0 To iReaded - 1
    If buffer1(i) <> buffer2(i) Then Return False
    Next

    iReaded = fs1.Read(buffer1, 0, BUFFERSIZE)
    If iReaded <> fs2.Read(buffer2, 0, BUFFERSIZE) Then Return False
    Loop
    Return True
    End Using
    End Using
    Catch ex As Exception
    Return False
    End Try
    End Function

    ولی در هیچ حالتی نیاز به تبدیلی که گفتید نیست، من در پست اولم هم گفتم جمله شما ایهام دارد و تبدیل wav به hex زیاد درست نیست و رفع ابهام کنید! تمامی فایلها در ذات به حالت باینری و هگزادیسمال نگه داری میشوند و تبدیل معنی ندارد. باز اگر میگفتید که میخواهید یک فایل wav را به حالت hex نمایش دهید، یک چیزی میشد (که دوستان و اساتید هم جواب همین سوال را داده اند).

    در کل (خیلی، خیلی، خیلی ....) میبخشید ولی من گمامن میکنم که شما اصلاً برنامه نویس نیستید و صرفاً یک سری فایل wav دارید که در زمان های مختلف از آنها کپی گرفته اید و حال میخواهید آنها را به یک فولدر غیر تکراری تبدیل کنید!

    برای این کار هم برنامه های زیادی موجود است و با یک سرچ در داداش گوگولی! میتوانید پیدایشان کنید و حتی یک فایل خط فرمان با نام fc برای مقایسه دو فایل در خود ویندوز موجود است.

    بهرهال کدی که من دادم (یا کد کاربر arsp_2004 با کمی تغییر) و این برنامه ها فقط میتوانند در صورتی فایلهای برابر را تشخیص دهند که فایلها حاصل کپی از هم باشند و شاید دو فایل را نابرابر تشخیص دهند چون یکی 2 پانیه بیش از دیگری زمان پخش دارد و یا شاید هردو به گوش انسان یکی باشند ولی این کدها آنها را متفاوت تشخیص میدهند. (فقط اگر کپی شده از روی هم باشند برابر تشخیص داده میشوند.)

تاپیک های مشابه

  1. اجرای Wave در VB
    نوشته شده توسط subsub در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: جمعه 28 اردیبهشت 1386, 16:21 عصر
  2. ضبط صدا با فرمت wave
    نوشته شده توسط delphi77 در بخش برنامه نویسی در Delphi
    پاسخ: 7
    آخرین پست: شنبه 14 مرداد 1385, 13:56 عصر
  3. رمز گذاری بر روی فایل های صوتی Wave
    نوشته شده توسط mr_esmaily در بخش برنامه نویسی در 6 VB
    پاسخ: 11
    آخرین پست: دوشنبه 23 خرداد 1384, 21:25 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •