
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
StaticText1: TStaticText; //这组件跟标签label效果差不多
StaticText2: TStaticText;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
function BitToInt(str:string):Integer; //2进制转10进制函数声明
function IntToBit(i:Integer):string; //10进制转2进制函数声明
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function tform1.BitToInt(str:string):Integer; //2进制转10进制
var
i,size:Integer;
begin
Result:=0;
size:=Length(str);
for i:=size downto 1 do
begin
if Copy(str,i,1)='1' then
Result:=Result+(1 shl (size-i));
end;
end;
function tform1.IntToBit(i: integer): string; //10进制转2进制
begin
while i <>0 do
begin
result:=Format('%d'+result,[i mod 2]); //i mod 2取余,再用format让这个字符在字符串中排在最前面
i:=i div 2 //上面的取余并不影响到i的值,这里还要div一次,得出商用于下一次循环
end
end;
procedure TForm1.Button1Click(Sender: TObject); //调用BitToInt
begin
Edit2.Text:=IntToStr(BitToInt(Edit1.Text));
end;
procedure TForm1.Button2Click(Sender: TObject); //调用IntToBit
var
i:Integer;
begin
i:=StrToInt(Edit2.Text);
Edit1.Text:=IntToBit(i);
end;
end.
可能有人对COPY函数不太了解,下面给出原型以供参考:
function Copy(
S: String; {字符串或动态数组}
Index: Integer; {起始位置}
Count: Integer {Copy 个数}
): String; {如果参数 S 是动态数组, 这里也应该返回动态数组}
可能有人对进制间转换的原理不太明白,或许这个对你有帮助:http://www.cnblogs.com/keycode/archive/2010/10/26/1861265.html
浙公网安备 33010602011771号