我定义了一个数组如下:
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,请问我该如何编写程序?
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;
每次取7位,是在一个元素取7位;还是每个元素取一位,组成7位?
楼主如果是要取前7位: shr右移
后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位的值
。
。
。
取前7个BIT
a[i]=a[i] and $fe00
右移11位
a[i]=a[i] shr 9
转换字符
chr(a[i])