var str,tmpstr:string; MyByte:array[0..5] of byte; i_pos,i:integer; begin str:='ff-fe-fd-fc-fb-fa'; i_pos:=pos('-',str); i:=0; while i_pos>0 do begin tmpstr:='$' + copy(str,1,2); delete(str,1,3); MyByte[i]:=strtoint( tmpstr); i_pos:=pos('-',str); i:=i + 1; end; MyByte[i]:=strtoint('$' + str); end;
uses StrUtils;procedure TForm1.FormCreate(Sender: TObject); var Src: string; Buf: array of Byte; Len: Integer; i: Integer; begin Src := 'FF-Fe-fD-01-02-10'; Src := AnsiReplaceText(Src, '-', ''); //Src := AnsiLowerCase(Src); if Length(Src) mod 2 = 0 then begin Len := Length(Src) div 2; SetLength(Buf, Len); HexToBin(Pointer(Src), Pointer(Buf), Len); end; for i := 0 to Length(Buf) - 1 do ShowMessage(IntToStr(Buf[i])); end;
DELPHI 在线帮助说 HexToBin 只认识小写字符 看来也不是嘛 这个算法对 Src 的格式是有一定要求的 去掉“-”后字符个数一定要是偶数 Src := 'FF-Fe-fD-01-02-10'; // OK Src := 'FF-Fe-fD-01-2-10'; // Not OK Src := 'FF-Fe-fD0-1-02-10'; // OK 能得出结果就行了 对格式的判断楼主自己来吧
MyByte:array[0..5] of byte;
i_pos,i:integer;
begin
str:='ff-fe-fd-fc-fb-fa';
i_pos:=pos('-',str);
i:=0;
while i_pos>0 do
begin
tmpstr:='$' + copy(str,1,2);
delete(str,1,3);
MyByte[i]:=strtoint( tmpstr);
i_pos:=pos('-',str);
i:=i + 1;
end;
MyByte[i]:=strtoint('$' + str);
end;
var
Src: string;
Buf: array of Byte;
Len: Integer;
i: Integer;
begin
Src := 'FF-Fe-fD-01-02-10';
Src := AnsiReplaceText(Src, '-', '');
//Src := AnsiLowerCase(Src);
if Length(Src) mod 2 = 0 then
begin
Len := Length(Src) div 2;
SetLength(Buf, Len);
HexToBin(Pointer(Src), Pointer(Buf), Len);
end;
for i := 0 to Length(Buf) - 1 do
ShowMessage(IntToStr(Buf[i]));
end;
这个算法对 Src 的格式是有一定要求的
去掉“-”后字符个数一定要是偶数
Src := 'FF-Fe-fD-01-02-10'; // OK
Src := 'FF-Fe-fD-01-2-10'; // Not OK
Src := 'FF-Fe-fD0-1-02-10'; // OK
能得出结果就行了
对格式的判断楼主自己来吧