如:16进制字符串:
    "FF-Fe-Fd......"(字符串之间用'-'或空格组成)
转换成:
    MyByte[0..N]:=(255,254,253.....)
其中N是数组长度,由16进制字符串来决定大小.

解决方案 »

  1.   

    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;
      

  2.   

    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;
      

  3.   

    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
    能得出结果就行了
    对格式的判断楼主自己来吧