2012年7月20日 星期五

Hex2Dec

因為VC++沒有支援Hex2Dec,所以只好自己寫了


因為對VC++不熟,外加搞不清楚狀況,所以寫了好久


不過也因為如此,學會如何簡單的寫VC++了


  int Hex2Dec( System::Windows::Forms::TextBox^ textBox)
  {
    int Val = 0;
    int Sum = 0;
    int Count = 0;
    if (textBox->TextLength <= 2)
    {
      String^ str = textBox->Text;
      do
      {
           Sum *= 16;
        if ( str[Count]>='0' &&  str[Count]<='9' )
        {
         Val = Convert::ToInt32( str[Count] ) - '0';
        }
        else if ( str[Count]>='A' &&  str[Count]<='F' )
        {
         Val = Convert::ToInt32( str[Count] ) - 'A' + 10;
        }
        else if ( str[Count]>='a' &&  str[Count]<='f' )
        {
         Val = Convert::ToInt32( str[Count] ) - 'a' + 10;
        }
        else
        {
          // failed!!!
        }
        Count++;
        Sum += Val;
      }while( textBox->TextLength - Count );
      //textBox2->Text =Sum.ToString();
    }
    else
    {
     // format error!!!
    }
    return Sum;


  }


 


使用方式


textBox2->Text =Hex2Dec( textBox1 ).ToString();


終於搞定入門款了


 


4 則留言:

  1. 有內建的拉

    int::Parse(strRx[i],System::Globalization::NumberStyles::HexNumber);
    [版主回覆07/21/2013 20:29:39]有需要include 什麼header file 嗎?

    回覆刪除
  2. 不需要特別include什麼,但我用.Net,不知道是不是.Net才有?
    [版主回覆07/23/2013 21:56:09]VC++ 比較特殊。 我是找不到相對應的hex2dec的函式,所以只好自己寫, 但用VC#的話, 就有函式可以CALL了, 因為GUI 不是我的主力, 所以我就混著用,主要看sample code有什麼,就用什麼 XDDD

    回覆刪除
  3. 我是用VS2010,語言選C++,還是會有.Net的東西可以用,我介紹給你的function就是

    回覆刪除
  4. 不過我最近愛上BCB6,hex2dec很簡單,就在HEX的字串前加上"0x",然後ToInt()就完成了,不必自己用手刻
    [版主回覆07/24/2013 21:49:43]BCB6最大的問題是很久沒有更新了,怕有相容性的問題。 所以我還是盡量雖M$的東西,雖然還挺另人感冒的就是了XDDD

    回覆刪除