十進位制轉十六進製制

2021-08-02 14:21:15 字數 2740 閱讀 9195

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   :=   1  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;

inte***ce

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

end;

var form1: tform1;

implementation

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;

endelse

begin

edit2.text:= inttohex(strtoint(edit1.text),4);

endelse

if edit2.text='' then

begin

messagebox(handle,'請輸入數字','警告!',mb_ok);

endelse

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

close;

end;

end.

十六進製制轉十進位制

create function fn hextobinary hex varchar 8 returns varchar 255 asbegin declare base tinyint declare string varchar 255 declare return varchar 255 de...

十進位制轉十六進製制

問 題 描 述 十 六 進 制 數 是 在 程 序 設 計 時 經 常 要 使 用 到 的 一 種 整 數 的 表 示 方 式 它 有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 共 16 個符號,分別表示十進位制數的 0 15。十六進製制的計數方法是滿16 進 1,所以十進位制數...

十六進製制轉十進位制

問題描述 從鍵盤輸入乙個不超過8位的正的十六進製制數字串,將它轉換為正的十進位制數後輸出。注 十六進製制數中的10 15分別用大寫的英文本母a b c d e f表示。樣例輸入 ffff 樣例輸出 65535 include include includeint main int len,i,j d...