查看内存数据的函数(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
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
相关文章推荐
- 协议
- Unity Assets目录下的文件夹用途
- 《数据结构》单链表反转
- css基础总结
- 排序算法总结之冒泡排序
- 一个程序员的Java和C,C++学习之路(整理)
- 安卓之旅第一步~
- RabbitMQ学习小结(三)—— Publish Subscribe[Python]
- php定时任务
- JS-textarea限制输入字数
- Spring MVC中如何传递对象参数
- flappy brid 开发实录(基于3d环境)
- 浅析“高内聚,低耦合”
- 字符数组和字符串指针,指针和引用,指针和多维数组
- RabbitMQ学习小结(二)—— Work Queues[Python]
- Educational Codeforces Round 9 A. Grandma Laura and Apples 水题
- C#Winform中运用DevExpress提供的ChartControl控件绘制饼状图
- 在JSP中如何传递变量
- 二分图匹配
- 设计模式概论