呵~~ 从楼主的题目看,楼主要得到的,是一个“数”,而非字符串。需要说明的是:同一个数,它有2进制、8进制、10进制、16进制....等等许多的表现形式,但无论什么形式,它还是那个数。以下是我的回答,不管楼主满意与否。var R : Word;//Word是无符号双字节数,16位 I : Byte; S : String; P : ^Byte; begin R := Random(65536); { 现在R就已经是你要的那个“16位的16进制数”了,你说它是10进制也行,2进制也行 } { 应该说,本问题到此为止已回答完毕,但为了使楼主理解更深,也担心楼主的本意就是要16进制形式的字符串,所以我写了以下的代码 } { 一、如果你想看一下这个数字的十六进制表现形式 } ShowMessage(Format('%.4x',[R]));//这就是其16进制表现形式 { 二、如果你想看一下这个数字的2进制表现形式 } S := ''; For I := 15 downto 0 do S := S + IntToStr((R shr I) and 1); ShowMessage(S); //这就是它的2进制表现形式,共16位 { 三、但是,在内存中,它的两个字节并不是按上面的顺序排列的 } S := ''; P := @R; For I := 0 to SizeOf(R)-1 do begin S := S + Format('%.2x',[P^]); Inc(P); end; ShowMessage(S); //这就是它的两个字节在内存中的排列顺序 end;
所
TmpStr:=IntToHEX(Rand($FFFFFFFF),8)+IntToHEX(Rand($FFFFFFFF),8)就可以了
本人对DELPHI不是怎么熟悉
从楼主的题目看,楼主要得到的,是一个“数”,而非字符串。需要说明的是:同一个数,它有2进制、8进制、10进制、16进制....等等许多的表现形式,但无论什么形式,它还是那个数。以下是我的回答,不管楼主满意与否。var
R : Word;//Word是无符号双字节数,16位
I : Byte;
S : String;
P : ^Byte;
begin
R := Random(65536);
{ 现在R就已经是你要的那个“16位的16进制数”了,你说它是10进制也行,2进制也行 }
{ 应该说,本问题到此为止已回答完毕,但为了使楼主理解更深,也担心楼主的本意就是要16进制形式的字符串,所以我写了以下的代码 } { 一、如果你想看一下这个数字的十六进制表现形式 }
ShowMessage(Format('%.4x',[R]));//这就是其16进制表现形式 { 二、如果你想看一下这个数字的2进制表现形式 }
S := '';
For I := 15 downto 0 do
S := S + IntToStr((R shr I) and 1);
ShowMessage(S); //这就是它的2进制表现形式,共16位 { 三、但是,在内存中,它的两个字节并不是按上面的顺序排列的 }
S := '';
P := @R;
For I := 0 to SizeOf(R)-1 do
begin
S := S + Format('%.2x',[P^]);
Inc(P);
end;
ShowMessage(S); //这就是它的两个字节在内存中的排列顺序
end;