wqlovt 发表于 2012-2-6 17:48:01

Win32 十/二进制转换 小工具



void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
       TCHAR msg;
      int idata, istate = 1;

      switch(id)
       {
             case IDC_BUTTON1:
             {
                  memset(msg , 0, sizeof(msg));
                  GetDlgItemText(hwnd, IDC_EDIT1, msg, sizeof(msg));
                  idata = atoi(msg);
                  if(0 == JudegNumber(msg, sizeof(msg)))
                  {
                            MessageBox(hwnd, TEXT("请输入正确格式!"),
                                        TEXT("Tips"), MB_OK | MB_ICONWARNING);
                            istate = 0;
                  }

                  itoa(idata, msg, 2);
                  if(1 == istate)
                   SetDlgItemText(hwnd, IDC_EDIT2, msg);
             }
             break;
            case IDC_BUTTON2:
         {
                memset(msg , 0, sizeof(msg));
                GetDlgItemText(hwnd, IDC_EDIT2, msg, sizeof(msg));
                idata = BinStrToDec(msg);
                itoa(idata, msg, 10);
                SetDlgItemText(hwnd, IDC_EDIT1, msg);
         }
         break;
         default:
         break;
       }
}
//2进制转换为10进制
int BinStrToDec(TCHAR* str)
{
int n, i, k;
int sum = 0;

n=strlen(str);
for(i = 0; i < n; i ++)
{
k = str -'0';
if(k == 1)
{
sum += (int)pow(2, n-i-1);
}
else if(k == 0)
{
continue;
}
else
{
MessageBox(NULL, TEXT("原数据不是二进制数!"), TEXT("Tips"),
MB_OK | MB_ICONWARNING);
}
}
return sum;
}

int JudegNumber(TCHAR *MSG, int inum)
{
int i;
int flag = 1;

for(i = 0; i < inum; i ++)
{
if(MSG >= '0' && MSG <= '9' || MSG == 0 || MSG == '.')
{
;
}
else
{
flag = 0;
}
}
return flag;
}

ylo523 发表于 2013-4-6 21:35:08

强烈支持楼主ing……

人为峰 发表于 2013-10-5 18:46:11

确实是小软件!!!!
页: [1]
查看完整版本: Win32 十/二进制转换 小工具