我的数据库中存储了一串十六进制 如:0x7C87541FD3F3EF5016E12D411900C87A6046A8E8
,我怎么才能得到我想要的字符串呢?

解决方案 »

  1.   

    如果是16进制数转话为字符串的话
    这样就可以了
    比如
    i : Integer ;
    str : String ;
    i := $10;
    str := IntToHex(i,2);
    这样
    str := '10'了
      

  2.   

    可不可以以 0x7C87541FD3F3EF5016E12D411900C87A6046A8E8 为具体例子给讲解一下
      

  3.   

    显然这么长一串 十六进制东东你得用数组来存储设数组为 aryByte  str := '';// str := '0x';
    for ii := Low(aryByte) to High(aryByte) do
      str := str + Format("%.2x",aryByte[ii]);
      
      

  4.   

    如果是16进制数转话为字符串的话 
    这样就可以了 
    比如 
    i : Integer ; 
    str : String ; 
    i := $10; 
    str := IntToHex(i,2); 
    这样 
    str := '10'了这是把16进制的整数转化为16进制的字符串
      

  5.   

    你觉得你的方法能把0x7C87541FD3F3EF5016E12D411900C87A6046A8E8转成字符吗?试一下再说 
      

  6.   

    这是我写的.转换一个数组为字符串function ArryByteToHexStr(ArryData: array of Byte;iCount: Integer): string;stdcall;
    var
      iloop: Integer;
      stmp: string;
    begin
      for iloop := 0 to iCount - 1 do
      begin
        stmp := stmp + IntToHex(ArryData[iloop],2) + ' ';
      end;
      Result := stmp;
    //IntToHex(ArryData[iloop],2)第二个参数表示转化后要保留几位.如果为2:$10_->'0A' 如果为3:$10_->'00A'
    end;
      

  7.   

    procedure TForm13.SpeedButton8Click(Sender: TObject);
    var
      i:Integer;
      s1:string;
      k:integer;
      s:string;
    begin
      s:='7C87541FD3F3EF5016E12D411900C87A6046A8E8';
      s1:='';
      for i:=1 to Length(s) div 2 do
      begin
        k:=strtoint('$'+Copy(s,1,2));
        s1:=s1+ Char(k);
        s:=Copy(s,3,Length(s)-2);
      end;
       ShowMessage(s1);
    end;
      

  8.   

    [Quote=引用 8 楼 yuqianyi1974 的回复:
    你觉得你的方法能把0x7C87541FD3F3EF5016E12D411900C87A6046A8E8转成字符吗?试一下再说 
    [/Quote]
    你先在你程序定义这样一个16进的数再说
    没理解别人的意思 就别乱发言
      

  9.   

     
    你先在你程序定义这样一个16进的数再说 
    没理解别人的意思 就别乱发言
    [/Quote]
    0x7C87541FD3F3EF5016E12D411900C87A6046A8E8
    delphi中最大的整数类型为int64,这个数远远大于int64,你的方法根本不行
      

  10.   

    我的意思也是这样的啊
    呵呵 
    这个数远超过了整型数据的范围
    我估计楼主的  0x7C87541FD3F3EF5016E12D411900C87A6046A8E8 
    是一个16进制的字符串
      

  11.   

    楼主大概是这个意思吧procedure TForm1.Button1Click(Sender: TObject);
    var
      s,t:string;
      i:integer;
    begin
      s:='0x7C87541FD3F3EF5016E12D411900C87A6046A8E8';
      i:=3;
      t:='';
      while i<length(s) do
      begin
        t:=t+char(strtoint(#36+s[i]+s[i+1]));
        i:=i+2
      end;
      ShowMessage(t);
    end;
      

  12.   

     fangsp 所说的应该就是我的意思:
    但是你的方法:
    i : Integer ; 
    str : String ; 
    i := $10; 
    str := IntToHex(i,2); 
    这样 
    str := '10'了 现在你的i是整型的而我的应该是十六进制的,这样能行吗???
      

  13.   

    我就是这么个意思:我的数据中的某个字段是 binary 类型的。现在我想读取其中的内容,但是这里面的内容是以字节流的形式存放的。也没有大家想象的那么复杂
      

  14.   

    function TFrmMenu.UnicodeToAnsi(Unicode: string): Variant;
    var   s,test:string;
          str:Widestring;
          i:integer;
          j,k:string[2];
          Temp: Variant;
    begin
       i:=1;
       s:='';
       while   i<Length(Unicode)+1   do
       begin
          j:=Copy(Unicode,i+2,2);
          k:=Copy(Unicode,i,2);
          i:=i+4;
          s:=s+Char(ReadHex(j))+Char(ReadHex(k));
       end;
       if   s<>''   then
          s:=WideCharToString(PWideChar(s+#0#0#0#0))
          // WideCharToStrVar(PWideChar(s+#0#0#0#0),test)
       else
          s:='';
       str:=s;
       Temp := s;
       Result:=Temp;
    end;
    看看这个有没有用
      

  15.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    dd:dword;
    begin
      dd:=$78954D20;
      Form1.Caption := format('%x',[dd]);
    end;%x就是格式化16进制了.楼主是不是要这种方法?