⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 二进制、16进制、10进制及格雷码的转换程序源代码
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString IntToBin(unsigned int Value,int Digits)
{
  unsigned int C=1;
  AnsiString Result="";
  if ((Digits < 1) || (Digits > 32)) return Result;
  for (int N=1;N<=Digits;N++)
  {
    if ((Value & C) == C)
       Result="1" + Result;
    else
       Result="0" + Result;
    C=C<<1;
  };
  return Result;
}
//---------------------------------------------------------------------------
unsigned int hextoint(const char *hexstr)
{
	int u;
	const char *cp;

	cp = hexstr;

	if (*cp == '\0')
		return 0;

	u = 0;
	while (*cp != '\0') {
		if (!isxdigit(*cp)) return 0;
		if (u >= 0x10000000)
			return 0;	/* overflow */
		u <<= 4;
		if (*cp <= '9')		/* very ascii dependent */
			u += *cp++ - '0';
		else if (*cp >= 'a')
			u += *cp++ - 'a' + 10;
		else
			u += *cp++ - 'A' + 10;
	}
	return u;
}
//---------------------------------------------------------------------------
unsigned int BinToInt(char *bin)
{
        unsigned int Value=0;
        while(*bin)
        {
        Value=Value<<1;
        Value += (*bin)-'0';
        bin++;
        };
        return Value;
}
//---------------------------------------------------------------------------
unsigned int DecimaltoGray(unsigned int x)
{
        return x^(x>>1);
}
//---------------------------------------------------------------------------
unsigned int GraytoDecimal(unsigned int x)
{
        unsigned int y = x;
        while(x>>=1)
        y ^= x;
        return y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DecEditExit(TObject *Sender)
{
        unsigned int a=DecEdit->Text.ToInt();
        BinEdit->Text=IntToBin(a,BinDigitEdit->Text.ToInt());
        GrayEdit->Text=IntToBin(DecimaltoGray(a),BinDigitEdit->Text.ToInt());
        GrayDecEdit->Text=BinToInt(GrayEdit->Text.c_str());
        HexEdit->Text=HexEdit->Text.IntToHex(a,(int)(BinDigitEdit->Text.ToInt()/4.0+0.5));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BinEditExit(TObject *Sender)
{
        DecEdit->Text =AnsiString(BinToInt(BinEdit->Text.c_str()));
        unsigned int a=DecEdit->Text.ToInt();
        HexEdit->Text=HexEdit->Text.IntToHex(a,(int)(BinDigitEdit->Text.ToInt()/4.0+0.5));
        GrayEdit->Text =IntToBin(DecimaltoGray(BinToInt(BinEdit->Text.c_str())),BinDigitEdit->Text.ToInt());
        GrayDecEdit->Text=BinToInt(GrayEdit->Text.c_str());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GrayEditExit(TObject *Sender)
{
        GrayDecEdit->Text=BinToInt(GrayEdit->Text.c_str());
        DecEdit->Text =GraytoDecimal(BinToInt(GrayEdit->Text.c_str()));
        unsigned int a=DecEdit->Text.ToInt();
        HexEdit->Text=HexEdit->Text.IntToHex(a,(int)(BinDigitEdit->Text.ToInt()/4.0+0.5));
        BinEdit->Text=IntToBin(a,BinDigitEdit->Text.ToInt());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GrayDecEditExit(TObject *Sender)
{
        GrayEdit->Text=IntToBin(GrayDecEdit->Text.ToInt(),BinDigitEdit->Text.ToInt());
        DecEdit->Text =GraytoDecimal(BinToInt(GrayEdit->Text.c_str()));
        unsigned int a=DecEdit->Text.ToInt();
        HexEdit->Text=HexEdit->Text.IntToHex(a,(int)(BinDigitEdit->Text.ToInt()/4.0+0.5));
        BinEdit->Text=IntToBin(a,BinDigitEdit->Text.ToInt());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::HexEditExit(TObject *Sender)
{
        DecEdit->Text=AnsiString(hextoint(HexEdit->Text.c_str()));
        unsigned int a=DecEdit->Text.ToInt();
        BinEdit->Text=IntToBin(a,BinDigitEdit->Text.ToInt());
        GrayEdit->Text=IntToBin(DecimaltoGray(a),BinDigitEdit->Text.ToInt());
        GrayDecEdit->Text=BinToInt(GrayEdit->Text.c_str());
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -