关于提取内存中四位数据转成Integer 类型(100分)

  • 主题发起人 主题发起人 flfqzrj
  • 开始时间 开始时间
F

flfqzrj

Unregistered / Unconfirmed
GUEST, unregistred user!
关于提取内存中四位数据转成Integer 类型
如有一段数据是 string等其它类型
我要提取其中某段开始的四位数据,存在一个integer的变量中,各位有没有比较得意的快速的写法。
如:
const
strTemp:string[8]='12345678';//内存中为 31 32 33 34 35 36 37 38
var
itemp:integer;

比如我要让itemp的内存内容为 33 34 35 36;
 
function TForm1.SaveToInt(const AStr: string; AFrom,
ALength: Integer): Integer;
var
TmpStr: ShortString;
begin
TmpStr := Copy(AStr, AFrom, ALength);
Move(TmpStr, Result, Length(TmpStr) + 1);
end;
 
itemp := PInteger(@strTemp[2])^;
Caption := IntToHex(itemp, 4);
 
如果反过来,想把Integer 的内存内容接到一个STRING后面呢

i:integer;
i:=$00313233;
str:string;
str:='abcdef';
我想把其
i的内容加到str后面
使其str内存中成为 61 62 63 64 65 66 00 31 32 33
 
i:=$00313233; //存储顺序是相反的,内存里是:33 32 31 00
str:='abcdef';
SetLength(str, Length(str) + 4);
PInteger(@str[Length(str) - 4 + 1])^ := i;
Caption := str;
 
大家的方法都不错的,可是没有经过检验,本人发现在内存,用muhx的方法会多写一个字节。
 
多人接受答案了。
 
后退
顶部