一个Pointer指向一段内存区域,如何对每个字节xor操作。(50分)

  • 主题发起人 主题发起人 shopman
  • 开始时间 开始时间
S

shopman

Unregistered / Unconfirmed
GUEST, unregistred user!
pp : Pointer;
pp := TFileStream.Memory;

我需要对PP的内存地址每个字节进行 xor 操作。怎么办??
 
Sorry!!

pp : Pointer;
pp := TMemoryStream.Memory;

我需要对PP的内存地址每个字节进行 xor 操作。怎么办??

 
Type
Buffer=Array[1..1] Of Byte;

Var
Buf:^Buffer;


Buf^:=1;
 
跟谁做 xor 啊? xor 是双操作数的啊

var
pp: PByte;
aMemoryStream: TMemoryStream;
begin
...
pp := aMemoryStream.Memory;
for i := 1 to aMemoryStream.Size do
begin
pp^ := pp^ xor 5
// 假设和 5 做 xor
pp := PByte(Integer(pp) + 1);
end;
end;

 
pp := PByte(Integer(pp) + 1);???
很简单啊
inc(pp);就行了!
 
上面说了
 
//pp := PByte(Integer(pp) + 1);???
//很简单啊
//inc(pp);就行了!

呵呵,习惯性动作,这样任何情况下都适用,
而 Inc 遇到 Pointer 等类型就不行了:)

 
接受答案了.
 
后退
顶部