+ -
当前位置:首页 → 问答吧 → 请问字符串SHL左移后怎么还原?

请问字符串SHL左移后怎么还原?

时间:2011-12-15

来源:互联网

Function SHLStr(Str1:String):String; 
var
  a:LongWord; 
  Int1,Int2:Integer; 
  j,j1:Integer;
  sum:LongWord; 
begin 
  Int2:=Length(Str1);
  for j1:=1 to Int2 do
  begin 
  a:=ord(Str1[j1]) shl 7;
  sum:=sum+a; 
  end; 
  Result:=IntToStr(sum);
end;

怎样写出还原函数呢?
SHLStr('你好'); => 4381616

作者: life923   发布时间: 2011-12-15

左移或右移是不能还原的。

作者: npkaida   发布时间: 2011-12-16

无能为力

作者: kaikai_kk   发布时间: 2011-12-16

得重写个函数,, 不能用左移,要先记录左边的高位,,然后人工再补到右边去.

作者: warrially   发布时间: 2011-12-16

假设一个数为

11010101

左移3位变成 10101 000
右移(8-3)=5位变成 00000 110

相加

10101 110


用这种方法还原.不然没办法

作者: warrially   发布时间: 2011-12-16

整型的话倒还可以左移等于乘2,右移除2
另外同意4L的意见,先保存左边三位,才可以还原

作者: funxu   发布时间: 2011-12-16

直接保留一个备份

作者: hongss   发布时间: 2011-12-16

不管那边移动,最后都会丢失一部分的。是没有办法还原的。

作者: jubobo   发布时间: 2011-12-16

为PHP编程高手的四条指南

作者: laiwenti   发布时间: 2011-12-16