• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

10进制与16进制之间的转换delphi

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

delphi中有直接把10进制转换成16进制的函数:

  function   IntToHex(Value:   Integer;   Digits:   Integer):   string;   overload;  
  function   IntToHex(Value:   Int64;   Digits:   Integer):   string;   overload;

使用方法为:

procedure   TForm1.Button1Click(Sender:   TObject);  
var  
      i,m:   Integer;   
begin   
   Label1.Caption   :=   '';   
   for   i   :=   to  Length(Edit1.Text)  do   
   begin

      m :=  StrToInt(Edit1.Text[i]));     
      edit2 := IntToHex(StrToInt(Edit1.Text[i]),2)+ '';   
      edit3 := IntToHex(m,2);        

   end;   
end;

 

然而,delphi中却没有把16进制直接转换成10进制的函数,将16进制转换成10进制需要自己定义函数,这是自己编写的一个,不当之处还请指出:

unit Unit1;
{
    16进制与10进制的相互转换
}
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);


  private
    function  HexToInt(str:string):word;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

 

procedure TForm1.FormCreate(Sender: TObject);
begin
    edit1.Clear;
    edit2.Clear;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
   str : string;
begin
    if edit1.Text<>'' then
      if edit2.Text<>'' then
      begin
        messageBox(handle,'只能输入一个数字,请重新输入','警告',MB_ok);
        edit1.Clear;
        edit2.Clear;
      end
      else
      begin
        edit2.Text:= IntToHex(strtoint(edit1.Text),4);
      end
    else
      if edit2.text='' then
      begin
        messageBox(Handle,'请输入数字','警告!',MB_ok);
      end
      else
      begin
        str := edit2.Text ;
        edit1.Text := IntToStr(HexToInt(str));
      end;
end;


function TForm1.HexToInt (str:string) : word;
var
   i , value : word;
   pos : word;

begin
   value:=0;
   pos:=length(str);
   for i:=1 to pos  do
   begin
      case str[i] of
      'f','F':
              value := value*16+15;
      'e','E':
              value := value*16+14;
      'd','D':
              value := value*16+13;
      'c','C':
              value := value*16+12;
      'b','B':
              value := value*16+11;
      'a','A':
              value := value*16+10;
      '0'..'9':
              value := value*16+ord(str[i])-ord('0');
      else
         result:=value;
         exit;
      end;
   result:=value;
  end;
 
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
    Application.Terminate;
    close;
end;

end.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphiTSaveDialog发布时间:2022-07-18
下一篇:
DELPHI判断文件夹是否存在,并创建发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap