在计算机中数据都是用二进制来表示的,比如说有com,它的二进制表示为:
01100011,01101111,01101101;现在我想将他们连起来向左移动一位,就变成了
110001101101111011011010,我如何实现呢?
  请高手指点迷津!

解决方案 »

  1.   

    procedure strshl(var s:string;i:integer);
    var iPos:integer;
    begin
      for iPos:=1 To Length(s) do s[iPos]:=char( Ord(s[iPos]) shl i);
    end;procedure strshr(var s:string;i:integer);
    var iPos:integer;
    begin
      for iPos:=1 To Length(s) do s[iPos]:=char( Ord(s[iPos]) shr i);
    end;
      

  2.   

    对了,我要的是循环左移,是不可以使用shl,shr这样的函数的,再帮我想想办法吧?
      

  3.   

    如果可能的话~~~~function strshl(s:string;i:integer;):string;
    var tmp1,tmp2:string;
    begin
      SetLength(tmp1,Length(s));
      CopyMemory(pChar(tmp1),pChar(s),Length(s)-i/8);
    end;可惜CopyMemory第三个参数是整形的