我定义了一个数组如下:
a:array [1..7] of word;a[1]:=$F2F2;
a[2]:=6;
a[3]:=$0101;
a[4]:=$5624;
a[5]:=$0511;
a[6]:=$1230;
a[7]:=$1209;我想每次从a一次取7个bit 作为一个ascii码,然后用这些ASCII码组成一个新的string,请问我该如何编写程序?

解决方案 »

  1.   

    var
      a1:byte;
      a2:word;
      resultstr:string;for i:=0 to 7 do
    begin
      a2:=$7F;
      a2:=a2 and a[i];
      a1:=a2;
      resultStr:=ResultStr+chr(a1)
    end;
      

  2.   

    楼主如果是要取前7位: shr右移
    后7位: a[i] and &7F
    如果是不连续的7位,就比较麻烦了。
    用a[i] and $7F{不一定是7F,看你准备空哪一位了}
    然后还要做相应的数学运算,才能得到去掉指定一位的ascii值。
    楼主自己算吧:)
      

  3.   

    方法:
    a[1] shr 1 得到前7位的值
    a[1] and 1 得到a[1]的第8位 + a[2] shr 2 得到前6位的值
    a[2] and 3 得到a[2]的第7,8位 + a[3] shr 3 得到前5位的值



      

  4.   

    取前7个BIT
    a[i]=a[i] and $fe00右移11位
    a[i]=a[i] shr 9转换字符
    chr(a[i])