اطلاعیه

Collapse
No announcement yet.

نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

    سلام به همه دوستان
    توی میکروهای AVR و با زبان C که برنامه می نویسیم هر عددی یه مقدار از حافظه رو میگیره، مثلا برای یه متغیر float، 4 بایت از حافظه اشغال میشه.
    وقتی تو برنامه کدویژن، بخواهیم به میکرو بفهمونیم که 4 بایت (مثلا یه کارکتر با 4 تا عضو) نشون دهندهی یه عدد اعشاری هستش و تو ادامه از اون عدد تو محاسبات استفاده کنیم، باید از چه دستوری استفاده کنیم؟
    و و قتی بخواهیم برعکس کار قبلی رو انجام بدیم، یعنی مثلا یه عدد اعشاری float رو تو یه متغیر کارکتر با 4 تا عضو ([4]unsigned char a) ذخیره کنیم، باید از چه دستوری استفاده کنیم ؟
    ---------
    .
    .
    ...........

    #2
    پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

    مختصر بگم

    یک نمونه کد ماشین حساب مهندسی نگاه کنی کار دستت میاد .

    بازم اگه سوالی بود درخدمتیم .
    که با اين درد اگر دربند درمانند درمانند
    فاميل دور : اشاره داره به درهايي که واقعا در نيستن ، مثل نقاشي در روي ديوار. يعني اين دردها مارو شبيه اون درها ميکنه .

    دیدگاه


      #3
      پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برا&

      نوشته اصلی توسط ajapyy
      سلام به همه دوستان
      توی میکروهای AVR و با زبان C که برنامه می نویسیم هر عددی یه مقدار از حافظه رو میگیره، مثلا برای یه متغیر float، 4 بایت از حافظه اشغال میشه.
      وقتی تو برنامه کدویژن، بخواهیم به میکرو بفهمونیم که 4 بایت (مثلا یه کارکتر با 4 تا عضو) نشون دهندهی یه عدد اعشاری هستش و تو ادامه از اون عدد تو محاسبات استفاده کنیم، باید از چه دستوری استفاده کنیم؟
      و و قتی بخواهیم برعکس کار قبلی رو انجام بدیم، یعنی مثلا یه عدد اعشاری float رو تو یه متغیر کارکتر با 4 تا عضو ([4]unsigned char a) ذخیره کنیم، باید از چه دستوری استفاده کنیم ؟
      سلام . میخوایید یه عدد رو رقم هاشو جدا کنید داخل یه ارایه بریزید؟ منظورتون اینه ؟
      123.5 تبدیل بشه به :
      unsigned char [5] = {'1','2','3'.', 5'}
      درست متوجه شدم ؟ یا یه العکس؟
      اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
      هيتلر

      دیدگاه


        #4
        پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

        نوشته اصلی توسط ajapyy
        سلام به همه دوستان
        توی میکروهای AVR و با زبان C که برنامه می نویسیم هر عددی یه مقدار از حافظه رو میگیره، مثلا برای یه متغیر float، 4 بایت از حافظه اشغال میشه.
        وقتی تو برنامه کدویژن، بخواهیم به میکرو بفهمونیم که 4 بایت (مثلا یه کارکتر با 4 تا عضو) نشون دهندهی یه عدد اعشاری هستش و تو ادامه از اون عدد تو محاسبات استفاده کنیم، باید از چه دستوری استفاده کنیم؟
        و و قتی بخواهیم برعکس کار قبلی رو انجام بدیم، یعنی مثلا یه عدد اعشاری float رو تو یه متغیر کارکتر با 4 تا عضو ([4]unsigned char a) ذخیره کنیم، باید از چه دستوری استفاده کنیم ؟
        سلام
        اون طوری که من متوجه شدم منظورشون اینه که چیکار کنم که یه متغیر 32 بیتی مثل Float ذخیرش کنم و چیکار کنم که اون رو تفکیک و درون 4 بایت Unsigned char قرارش بدم و ذخیرش کنم
        درسته ؟؟؟
        اگر منظورتون اینه تو کدویژن قبلا خواستم این کار رو بکنم ولی متاسفانه کدویژن دسترسی نداره و دسترسی به ما نمیده !!!!
        شاید هم من بلد نباشم !!
        ولی اگر مشکلتون ذخیره کردن هست میتونید مستقیما روی EEPROM ذخیرش کنید .
        اگر هم میخواهید اون رو به String تبدبل و به صورت کاراکتر - کاراکتر روی EEPROM ذخیرش کنید ...

        موفق باشید
        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
        معرفی نرم افزار Codewizard PWM
        با من بیشتر آشنا شوید

        دیدگاه


          #5
          پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

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

          دیدگاه


            #6
            پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

            ممنون از دوستانی که جواب دادن
            فرض کنید که من دو تا متغیر دارم :
            float f=123.4567;
            unsigned char a[4];

            f=f*12.3456;

            خوب حالا میخوام متغیر f رو تو حافظه و توی کارکتر a ذخیرش کنم تا دفعات بعدی بتونم ازش استفاده کنم. چطور باید این کارو کنم؟
            یا برعکسش :
            unsigned char a[4]= {0x42,0xf6,0xe9,0xd5};
            float f;

            کارکتر a نشون دهنده 32 بیت عدد اعشاری 123.4567 هستشک تو کدویژن چطور میشه به میکرو فهموند این 4 بایت، عدد اعشاری هستند و حاصل تبدیل رو ریخت توی f.
            بازم ممنون..
            ---------
            .
            .
            ...........

            دیدگاه


              #7
              پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

              نوشته اصلی توسط ajapyy
              ممنون از دوستانی که جواب دادن
              فرض کنید که من دو تا متغیر دارم :
              float f=123.4567;
              unsigned char a[4];

              f=f*12.3456;

              خوب حالا میخوام متغیر f رو تو حافظه و توی کارکتر a ذخیرش کنم تا دفعات بعدی بتونم ازش استفاده کنم. چطور باید این کارو کنم؟
              یا برعکسش :
              unsigned char a[4]= {0x42,0xf6,0xe9,0xd5};
              float f;

              کارکتر a نشون دهنده 32 بیت عدد اعشاری 123.4567 هستشک تو کدویژن چطور میشه به میکرو فهموند این 4 بایت، عدد اعشاری هستند و حاصل تبدیل رو ریخت توی f.
              بازم ممنون..
              ببخشید یه سوال
              چه نیازی به این کار هست؟؟؟؟
              چرا میخواهید این کار رو بکنید ؟؟
              یه سوال دیگه
              منظورتون از حافظه ، کدوم حافظه هست ؟؟؟ SRAM - EEPROM کدومش ؟؟
              اگر هدفتون Save کردن هست که خیلی راحت میتونید بریزید تو EEPROM
              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
              معرفی نرم افزار Codewizard PWM
              با من بیشتر آشنا شوید

              دیدگاه


                #8
                پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

                نوشته اصلی توسط SAMAN.ASADI
                ببخشید یه سوال
                چه نیازی به این کار هست؟؟؟؟
                چرا میخواهید این کار رو بکنید ؟؟
                یه سوال دیگه
                منظورتون از حافظه ، کدوم حافظه هست ؟؟؟ SRAM - EEPROM کدومش ؟؟
                اگر هدفتون Save کردن هست که خیلی راحت میتونید بریزید تو EEPROM
                شما فرض کنید که قراره یه عدد اعشاری از سمت PC (یا یه میکروی دیگه) برای میکرو ارسال بشه و برای این کار از تبدیل به رشته استفاده نشه، و 4 بایت متناظر اون مثل همون مثالی که زدم، استفاده بشه. حالا ما تو ارتباطمون 4 بایت داریم، که می خواهیم میکرو بهش مثل یک عدد اعشاری نگاه کنه و ازش تو ادامه برنامه به عنوان یک عدد اعشاری استفاده کنه.
                در مورد حافظه هم بگم که مهم ذخیره کردن اون 4 بایتی هست که برای میکرو میاد و ذخیره کردن اون 4 بایت چه تو SRAM ویا چه تو EEPROM کاری نداره. من دنبال تبدیلی هستم که بهم معادل 4 بایت یک عدد اعشاری یا عدد اعشاری معادل 4 بایت رو بهم بده.
                ---------
                .
                .
                ...........

                دیدگاه


                  #9
                  پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

                  نوشته اصلی توسط ajapyy
                  شما فرض کنید که قراره یه عدد اعشاری از سمت PC (یا یه میکروی دیگه) برای میکرو ارسال بشه و برای این کار از تبدیل به رشته استفاده نشه، و 4 بایت متناظر اون مثل همون مثالی که زدم، استفاده بشه. حالا ما تو ارتباطمون 4 بایت داریم، که می خواهیم میکرو بهش مثل یک عدد اعشاری نگاه کنه و ازش تو ادامه برنامه به عنوان یک عدد اعشاری استفاده کنه.
                  در مورد حافظه هم بگم که مهم ذخیره کردن اون 4 بایتی هست که برای میکرو میاد و ذخیره کردن اون 4 بایت چه تو SRAM ویا چه تو EEPROM کاری نداره. من دنبال تبدیلی هستم که بهم معادل 4 بایت یک عدد اعشاری یا عدد اعشاری معادل 4 بایت رو بهم بده.
                  http://www.eca.ir/forum2/index.php?topic=90089.0
                  این لینک رو نگاه کن
                  پست آخری میتونه بهتون کمک کنه
                  [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                  معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                  معرفی نرم افزار Codewizard PWM
                  با من بیشتر آشنا شوید

                  دیدگاه


                    #10
                    پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برا&

                    مهندس اینو یه نگاه بکن :
                    کد:
                    Flot i ;
                    Int t;
                    i=123.45
                    I=i*100; //ashar az beine mire :i= 12345
                    t=i%10; //t=5 >> 5 ro az inja estekhraj mi****m hala 5 ro dakhele ye khone az araye berizid 
                     i=i/10;=1234 >> baghimonde adad ina mishe yani amalan 5 az rade kharej shod. dobare hamin 2 khate bala ro tekrar ****d ta 0 beshe baghi monde 
                    va hame adad kharej beshan
                    همین کارو اینقدر انجام میدید تا اعداد جدا بشن بعد میریزید تو ارایه Int اگر هم میخوایید به char تبدیل کنید کافیه هر عدد رو با 48 جمع کنید بعد بریزید داخل ارایه char این عمل یه جورایی شبیه عمل تابع sprintf هستش . 2 تا تابع هم هست مختص همین کاراست atoi و itoa اگه اشتباه نکنم که میتونید تو نت سرچ کنید به راحتی این عمل رو انجام میده
                    اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
                    هيتلر

                    دیدگاه


                      #11
                      پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

                      ---
                      اگر روزی بفهمی همه چیزایی که از بچگی تا حالا بهت گفتن بی اساس یا دروغه چه حالی میشی؟
                      کارمندان نابکار، از دزدان و آشوبگران بیشتر به کشور آسیب ميآ‌رسانند

                      دیدگاه


                        #12
                        پاسخ : پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برا&

                        نوشته اصلی توسط Saeed Saeb
                        مهندس اینو یه نگاه بکن :
                        کد:
                        Flot i ;
                        Int t;
                        i=123.45
                        I=i*100; //ashar az beine mire :i= 12345
                        t=i%10; //t=5 >> 5 ro az inja estekhraj mi****m hala 5 ro dakhele ye khone az araye berizid 
                         i=i/10;=1234 >> baghimonde adad ina mishe yani amalan 5 az rade kharej shod. dobare hamin 2 khate bala ro tekrar ****d ta 0 beshe baghi monde 
                        va hame adad kharej beshan
                        همین کارو اینقدر انجام میدید تا اعداد جدا بشن بعد میریزید تو ارایه Int اگر هم میخوایید به char تبدیل کنید کافیه هر عدد رو با 48 جمع کنید بعد بریزید داخل ارایه char این عمل یه جورایی شبیه عمل تابع sprintf هستش . 2 تا تابع هم هست مختص همین کاراست atoi و itoa اگه اشتباه نکنم که میتونید تو نت سرچ کنید به راحتی این عمل رو انجام میده
                        دو نا تابع itoa و atoi برای تبدیل اعداد صحیح به رشته و بالعکس هستند. توابع ftoa و atof برای تبدیل رشته به عدد اعشاری و بالعکس استفاده میشه. با تابع ftoa نمیشه یک عدد با دقت 3 رقم اعشار مثلا 123.456 رو توی یک کارکتر با 4 تا آرایه ریخت. بالعکسش هم به کار من نمیاد چون من نمی خوام اعداد رو به صورت رشته ارسال و دریافت کنم ا بعدا مجبور شم از این توابع برای تبدیل استفاده کنم.

                        نوشته اصلی توسط داود رهایی
                        یک دستوری در زبان سی وجود داره بنام union یک نگاهی بهش بنداز فکر میکنم مشکلت رو حل کنه
                        دستور union به نظر من برای این هست که یک حافظه رو به چند نوع متغیر تخصیص بدی و هر بار از هرکدوم استفاده کنی البته همزمان نمیشه.
                        اینجا من یک آرایه با 4 بایت حافظه دارم که همیشه برای معادل هگز اعداد اعشاری استفاده میشه.
                        ---------
                        .
                        .
                        ...........

                        دیدگاه


                          #13
                          پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

                          ---
                          اگر روزی بفهمی همه چیزایی که از بچگی تا حالا بهت گفتن بی اساس یا دروغه چه حالی میشی؟
                          کارمندان نابکار، از دزدان و آشوبگران بیشتر به کشور آسیب ميآ‌رسانند

                          دیدگاه


                            #14
                            پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه

                            unsigned char array[4];
                            float f;
                            memcpy(array,(unsigned char*)&f,4); //from float to array
                            memcpy((unsigned char*)&f,array,4); //from array to float

                            دیدگاه


                              #15
                              پاسخ : نحوه تبدیل اعداد اعشاری به کارکتر برای ذخیره شدن تو حافظه


                              char* ptr=(char*)&f;
                              a[0]=*ptr;
                              ptr++;
                              a[1]=*ptr;
                              ptr++;
                              a[2]=*ptr;
                              ptr++;
                              a[3]=*ptr;


                              برای برگردوندن هم


                              f=*((float*)a);

                              دیدگاه

                              لطفا صبر کنید...
                              X