📄 unit1.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 + -