读书人

怎么随机得到一个16位的16进制数

发布时间: 2012-03-31 13:13:26 作者: rapoo

如何随机得到一个16位的16进制数?
如题

[解决办法]
呵~~
从楼主的题目看,楼主要得到的,是一个“数”,而非字符串。需要说明的是:同一个数,它有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;

读书人网 >.NET

热点推荐