hextobin 和 bintohex
有没有使用成功的例子,试了几次都不成。  最初的目的是把一个图片信息存成字符串 然后用的时候转换。

解决方案 »

  1.   

    // drop 3 TLabel components on a Form
    // and assign the code to form createvar
      E: Extended;
      //Make sure there is room for null terminator
      Buf: array[0..SizeOf(Extended) * 2] of Char;
    begin
      E := Pi;
      Label1.Caption := Format('Pi starts off as %.15f', [E]);
      BinToHex(@E, Buf, SizeOf(E));
      //Slot in the null terminator for the PChar, so we can display it easily
      Buf[SizeOf(Buf) - 1] := #0;
      Label2.Caption := Format('As text, the binary contents of Pi look like %s', [Buf]);
      //Translate just the characters, not the null terminator
      HexToBin(Buf, @E, SizeOf(Buf) - 1);
      Label3.Caption := Format('Back from text to binary, Pi is now %.15f', [E]);
    end;
      

  2.   

    ///////////////////////////////////////////////////// 
    // Pic_conversion.pas 
    //  ³ÌÐò¹¦ÄÜ£º½â¾öͼÏó(.jpg)ÔÚMIDASÖпͻ§¶ËÓë·þÎñ¶ËµÄ´«µÝ 
    //  ±àдʱ¼ä£º2003.12.4 
     
    //  ³ÌÐò˼Ï룺ÀûÓÃBase 64 Encoding/DecodingÖеĠ
    //            EncodeString/DecodeString ½«Í¼Ïó(.jpg)½øÐР
    //            ±àÂë/½âÂëºó£¬×ªÎªStringÀàÐͽøÐд«µÝ 
    // 
    //  function EncodeString(const Input: string): string; 
    //  function DecodeString(const Input: string): string; 
    ///////////////////////////////////////////////////// 
    unit Pic_conversion; interface uses 
     SysUtils, Classes, jpeg, EncdDecd; type 
     TPic = class(Tobject) 
     private 
       FFilename: String; // Í¼Ïó(.jpg)ÎļþλÖà
       function GetFilename: String; 
       procedure SetFilename(Value: String); 
     public 
       property Filename : String read GetFilename write SetFilename;    function PictoStream(var Ffilename: String): String; 
       procedure StreamtoPic(var target: String); 
     end; implementation { TPic } function TPic.GetFilename: String; 
    begin 
     Result := FFilename; 
    end; // Á÷תΪͼƬÎļþ ·þÎñ¶Ëµ÷Óà
    procedure TPic.StreamtoPic(var target: String); 
    var ams : TmemoryStream; 
       ass : TstringStream; 
    begin 
     ass := TStringStream.Create(DecodeString(target)); // ½âÂëBase 64תString 
     ams := TmemoryStream.Create; 
     try 
       ams.LoadFromStream(ass); 
       ams.SaveToFile('c:\temp.jpg'); 
     finally 
       ass.Free; 
       ams.Free; 
     end; 
    end; procedure TPic.SetFilename(Value: String); 
    begin 
     if Value <> '' then FFilename := Value; 
    end; // &Iacute;&frac14;&AElig;&not;&Icirc;&Auml;&frac14;&thorn;×&ordf;&Icirc;&ordf;&Aacute;÷  &iquest;&Iacute;&raquo;§&para;&Euml;&micro;÷&Oacute;&Atilde; 
    function TPic.PictoStream(var Ffilename: String): String; 
    var ass : TstringStream; 
       ams : TmemoryStream; 
    begin 
     ams := TmemoryStream.Create; 
     ass := Tstringstream.Create(''); 
     try 
       ams.LoadFromFile(Ffilename); 
       ams.SaveToStream(ass); 
       Result := EncodeString(ass.DataString); //Stirng ±à&Acirc;&euml;&sup3;&Eacute;Base 64 
     finally 
       ams.Free; 
       ass.Free; 
     end; 
    end; end.  
      

  3.   

    // drop 3 TLabel components on a Form
    // and assign the code to form createvar
      E: Extended;
      //Make sure there is room for null terminator
      Buf: array[0..SizeOf(Extended) * 2] of Char;
    begin
      E := Pi;
      Label1.Caption := Format('Pi starts off as %.15f', [E]);
      BinToHex(@E, Buf, SizeOf(E));
      //Slot in the null terminator for the PChar, so we can display it easily
      Buf[SizeOf(Buf) - 1] := #0;
      Label2.Caption := Format('As text, the binary contents of Pi look like %s', [Buf]);
      //Translate just the characters, not the null terminator
      HexToBin(Buf, @E, SizeOf(Buf) - 1);
      Label3.Caption := Format('Back from text to binary, Pi is now %.15f', [E]);
    end;
      

  4.   

    ///////////////////////////////////////////////////// 
    // Pic_conversion.pas 
    //  程序功能:解决图象(.jpg)的传递 
    //  编写时间:2003.12.4 
     
    //  程序思想:利用Base 64 Encoding/Decoding中的 
    //            EncodeString/DecodeString 将图象(.jpg)进行 
    //            编码/解码后,转为String类型进行传递 
    // 
    //  function EncodeString(const Input: string): string; 
    //  function DecodeString(const Input: string): string; 
    ///////////////////////////////////////////////////// 
    unit Pic_conversion; interface uses 
     SysUtils, Classes, jpeg, EncdDecd; type 
     TPic = class(Tobject) 
     private 
       FFilename: String; // 图象(.jpg)文件位置 
       function GetFilename: String; 
       procedure SetFilename(Value: String); 
     public 
       property Filename : String read GetFilename write SetFilename;    function PictoStream(var Ffilename: String): String; 
       procedure StreamtoPic(var target: String); 
     end; implementation { TPic } function TPic.GetFilename: String; 
    begin 
     Result := FFilename; 
    end; // 流转为图片文件 服务端调用 
    procedure TPic.StreamtoPic(var target: String); 
    var ams : TmemoryStream; 
       ass : TstringStream; 
    begin 
     ass := TStringStream.Create(DecodeString(target)); // 解码Base 64转String 
     ams := TmemoryStream.Create; 
     try 
       ams.LoadFromStream(ass); 
       ams.SaveToFile('c:\temp.jpg'); 
     finally 
       ass.Free; 
       ams.Free; 
     end; 
    end; procedure TPic.SetFilename(Value: String); 
    begin 
     if Value <> '' then FFilename := Value; 
    end; // 图片文件转为流  客户端调用 
    function TPic.PictoStream(var Ffilename: String): String; 
    var ass : TstringStream; 
       ams : TmemoryStream; 
    begin 
     ams := TmemoryStream.Create; 
     ass := Tstringstream.Create(''); 
     try 
       ams.LoadFromFile(Ffilename); 
       ams.SaveToStream(ass); 
       Result := EncodeString(ass.DataString); //Stirng 编码成Base 64 
     finally 
       ams.Free; 
       ass.Free; 
     end; 
    end; end.  
      

  5.   

    Delphi 自带的 HexToBin 是将一个数值的十六进制表达的字符串转换成 ASCII 码,而非二进制表达式。例如:procedure TForm1.Button1Click(Sender: TObject);
    var
      hex:string;
      binary:array[0..7] of char;
    begin
      hex:='414243444546';
      HexToBin(PChar(hex),binary,8);
      caption:='';
      Label1.caption:=binary; //显示:'ABCDEF','A'的ASCII值用16进制表达是$41,'B'是$42...
    end;
    实在要用就用这个函数吧:
    function TForm1.HexToBin(HexStr: String): String;
    const
      BinLst1: array ['0'..'9'] of String[4]
              = ('0000','0001','0010','0011','0100','0101','0110','0111','1000','1001');
      BinLst2: array ['A'..'F'] of String[4]
              = ('1010','1011','1100','1101','1110','1111');
      HexChars: set of char = ['0'..'9', 'A'..'F', 'a'..'f'];
    var
      I, X: Integer;
      ch: Char;
    begin
      X:= 0; Result:= '';
      for I:= 1 to Length(HexStr) do
        if HexStr[I] in HexChars then begin
          X:= I; Break;
        end;
      if X = 0 then Exit;
      for I:= X to length(HexStr) do begin
        ch:= upcase(HexStr[I]);
        case ch of
          '0'..'9': Result:= Result + BinLst1[ch];
          'A'..'F': Result:= Result + BinLst2[ch];
          else Break;
        end;{case}
      end;
    end;