var
 Tempstr:array [0..10000] of char;
 tempint:smallint;
begin
 tempint:=(Psmallint(@Tempstr))^;
end;
现在我知道tempint的值,怎么去取Tempstr的值呢,有点逆运算的意思!
请各位大侠指教!!!

解决方案 »

  1.   

    从你的代码看,SmallInt类型的TempInt值,实际就相当于 Ord(TempStr[0]) shl 8 + Ord(TempStr[1])
    也就是说,TempInt是取得了TempStr第一个元素、第二个元素共2个字节的值,并把它视为一个双字节的SmallInt数注意,TempInt取得的是内存空间的“值”,而非地址,无法进行逆运算获得地址。
      

  2.   

    不过,我那个表达式,是否应该是 Ord(TempStr[1]) shl 8 + Ord(TempStr[0])这个我没有考证。也就是说,高字节在前?低字节在前?没试。待你试了。但无法逆运算,我可以肯定的。