一个字符串
a := '31 32 33 34 35 A1 A2 A3 FF'我现在要把他转换成一个BYTE的动态数组var
sss:array of byte;首先设置这个动态数组大小setlength(sss,(length(a)+1) div 3)
//这个就是看字符串a的长度,然后+1,整除3,就等于有多少个byte了,这个a有9个byte;接下来就是给这个动态数组赋值,我想呢,就是 sss[0] := 31;
sss[1] := 32;
sss[2] := 33;
sss[3] := 34;
sss[4] := 35;
sss[5] := A1;
sss[6] := A2;
sss[7] := A3;
sss[8] := FF;
//我要的就是这个效果,看我下面的代码看我的代码 for i:=0 to ((length(a)+1) div 3)-1 do
begin
sss[i] := strtoint('$'+a[i*3+1]+a[i*3+2])
end;这样就完成了给动态数组赋值,由于a的值不是很大,所以感觉不出来卡,如果上千个byte,那肯定会变慢求解,有什么更快的方法?
a := '31 32 33 34 35 A1 A2 A3 FF'我现在要把他转换成一个BYTE的动态数组var
sss:array of byte;首先设置这个动态数组大小setlength(sss,(length(a)+1) div 3)
//这个就是看字符串a的长度,然后+1,整除3,就等于有多少个byte了,这个a有9个byte;接下来就是给这个动态数组赋值,我想呢,就是 sss[0] := 31;
sss[1] := 32;
sss[2] := 33;
sss[3] := 34;
sss[4] := 35;
sss[5] := A1;
sss[6] := A2;
sss[7] := A3;
sss[8] := FF;
//我要的就是这个效果,看我下面的代码看我的代码 for i:=0 to ((length(a)+1) div 3)-1 do
begin
sss[i] := strtoint('$'+a[i*3+1]+a[i*3+2])
end;这样就完成了给动态数组赋值,由于a的值不是很大,所以感觉不出来卡,如果上千个byte,那肯定会变慢求解,有什么更快的方法?
var
a := '31 32 33 34 35 A1 A2 A3 FF';
sss:array of byte;
sl: TStringList;
i: integer;
begin
sl:=TStringList.create;
try
sl.commaText:=a;
setlength(sss,sl.count);
for i:= 0 to sl.count-1 do
sss[i] := strtoint('$'+sl(i));
finally
sl.free;
//setlength(sss,0);
end;
end;
sss[i] := ord(a[i*3+1])-ord('A')+10
else
sss[i] := ord(a[i*3+1])-ord('0');
sss[i]:=sss[i]*16;
if a[i*3+2]>='A' then
sss[i] := sss[i]+ord(a[i*3+2])-ord('A')+10
else
sss[i] := sss[i]+ord(a[i*3+2])-ord('0');