您的位置:首页 > 其它

查看内存数据的函数(ByteToHex和ByteToBin,最终都变成String)

2016-03-02 22:13 316 查看
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

{用十六进制查看内存的函数; 参数1是内存起点, 参数2是以字节为单位的长度}

function ToHex(p: PByteArray; bit: Integer): string;

var

i: Integer;

begin

for i := 0 to bit - 1 do

Result := IntToHex(p^[i], 2) + Chr(32) + Result;

Result := TrimRight(Result);

end;

{用二进制查看内存的函数; 参数1是内存起点, 参数2是以字节为单位的长度}

function ToBin(p: PByteArray; bit: Integer): string;

const

Convert: array['0'..'F'] of string = (

'0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001',

'', '', '', '', '', '', '', '1010', '1011', '1100', '1101', '1110', '1111');

var

i: Integer;

s: string;

begin

s := ToHex(p, bit);

for i := 1 to Length(s) do

if s[i] <> Chr(32) then

Result := Result + Convert[s[i]]

else

Result := Result + Chr(32);

end;

{测试一}

procedure TForm1.Button1Click(Sender: TObject);

var

num: Integer;

begin

Randomize;

num := Random(MaxInt);

ShowMessage(IntToStr(num) + #10#13#10#13 +

ToHex(@num, 4) + #10#13#10#13 +

ToBin(@num, 4));

end;

{测试二}

procedure TForm1.Button2Click(Sender: TObject);

var

str: string;

begin

str := 'Delphi 2010';

ShowMessage(str + #10#13#10#13 +

ToHex(@str[1], Length(str)*SizeOf(str[1])) + #10#13#10#13 +

ToBin(@str[1], Length(str)*SizeOf(str[1])));

end;

end.
http://peirenlei.iteye.com/blog/548322
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: