我定义了一个数组如下:
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,请问我该如何编写程序?
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,请问我该如何编写程序?
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;
后7位: a[i] and &7F
如果是不连续的7位,就比较麻烦了。
用a[i] and $7F{不一定是7F,看你准备空哪一位了}
然后还要做相应的数学运算,才能得到去掉指定一位的ascii值。
楼主自己算吧:)
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位的值
。
。
。
a[i]=a[i] and $fe00右移11位
a[i]=a[i] shr 9转换字符
chr(a[i])