现在有一个字符串 str:= 0186A0;   
  我现在用 str[i]  去   取出的是0\1\8\6\A\0
  我想用str[i]   去   取  01  86  A0  
    我是msg[i]:= ord(str[i]); 的实现

解决方案 »

  1.   

    你是不是想这样???
    msg[i]:= Copy(str, 1+i*2, 2);
      

  2.   

    如果你01表示两个字节的字符串,是不能满足你的要求的
    如果01表示一个字节的一个整数,是可以做到的,但取出的时候还是一个字节的整数var
      str, Str2: string;
      I: Integer;
    begin
      str:= '0186A0';
      SetLength(Str2, Length(Str) div 2);
      for I := 1 to Length(str) div 2 do
      begin
        Str2[I] := Chr(StrToInt('$' + Copy(str, 2 * I -1, 2)));
      end;
      //此时str2已经满足你的要求
    end;
      

  3.   

    var
     str:string;
     tempstr:string;
     tempint:integer;str:='12345';
    while str<>'' do
    begin
    tempstr:='$'+copy(str,1,2);
    tempint:=strtoint(tempstr);
    str:=copy(str,3,length(str)-2);  
    end;//--每两个字符取一次后转换成BYTE类型的数据。这个算法我得用很多了。。