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

  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. Button1: TButton;
  9. Button2: TButton;
  10. procedure Button1Click(Sender: TObject);
  11. procedure Button2Click(Sender: TObject);
  12. end;
  13. var
  14. Form1: TForm1;
  15. implementation
  16. {$R *.dfm}
  17. {用十六进制查看内存的函数; 参数1是内存起点, 参数2是以字节为单位的长度}
  18. function ToHex(p: PByteArray; bit: Integer): string;
  19. var
  20. i: Integer;
  21. begin
  22. for i := 0 to bit - 1 do
  23. Result := IntToHex(p^[i], 2) + Chr(32) + Result;
  24. Result := TrimRight(Result);
  25. end;
  26. {用二进制查看内存的函数; 参数1是内存起点, 参数2是以字节为单位的长度}
  27. function ToBin(p: PByteArray; bit: Integer): string;
  28. const
  29. Convert: array['0'..'F'] of string = (
  30. '0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001',
  31. '', '', '', '', '', '', '', '1010', '1011', '1100', '1101', '1110', '1111');
  32. var
  33. i: Integer;
  34. s: string;
  35. begin
  36. s := ToHex(p, bit);
  37. for i := 1 to Length(s) do
  38. if s[i] <> Chr(32) then
  39. Result := Result + Convert[s[i]]
  40. else
  41. Result := Result + Chr(32);
  42. end;
  43. {测试一}
  44. procedure TForm1.Button1Click(Sender: TObject);
  45. var
  46. num: Integer;
  47. begin
  48. Randomize;
  49. num := Random(MaxInt);
  50. ShowMessage(IntToStr(num) + #10#13#10#13 +
  51. ToHex(@num, 4) + #10#13#10#13 +
  52. ToBin(@num, 4));
  53. end;
  54. {测试二}
  55. procedure TForm1.Button2Click(Sender: TObject);
  56. var
  57. str: string;
  58. begin
  59. str := 'Delphi 2010';
  60. ShowMessage(str + #10#13#10#13 +
  61. ToHex(@str[1], Length(str)*SizeOf(str[1])) + #10#13#10#13 +
  62. ToBin(@str[1], Length(str)*SizeOf(str[1])));
  63. end;
  64. end.

http://peirenlei.iteye.com/blog/548322

上一篇:hapv-一个可以播放,下载国内主流视频的播放器


下一篇:在Java中使用MD5和BASE64