字符串转化为十六进制,如何做呢?把dd:='C0';转化为十六进制如何做呢?

解决方案 »

  1. dd :='$'+'c0';
    showmessage(inttostr(strtoint(dd)));
      

  2. 利用Ord()和IntToHex()函数就可以了!
      

  3. var tmp: integer;
        hex: string;
    for i := 1 to Length(dd) do
    begin
      tmp := Ord(dd[i]);
      hex := IntToHex(tmp, 2);
    end;
      

  4. 如果转换汉字的话考虑如下代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        procedure Edit1Change(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Edit1Change(Sender: TObject);
    var s: string;
        i, j, k: integer;
        a: array[1..1000] of char;
    begin
      s:='';
      for i:=1 to Length(Edit1.Text) do begin
       j:=Integer(Edit1.Text[i]);
       s:=s+Copy(Format('%X ',[j+$100]) ,2,3);
      end;
      Edit2.Text:=s;  StringToWideChar(Edit1.Text, @(a[1]), 500);
      s:=''; i:=1;
      while ((a[i]<>#0) or (a[i+1]<>#0)) do begin
       j:=Integer(a[i]); k:=Integer(a[i+1]);
       s:=s+Copy(Format('%X ',[j*$100+k+$10000]) ,2,5);
       i:=i+2;
      end;
      Edit3.Text:=s;end;end.
      

  5. 这一句还是这么写,呵呵:
    var i: integer;
        hex: string;
    begin
      dd := 'C0';
      for i := 1 to Length(dd) do
      begin
        hex := hex + ' ' + IntToHex(Ord(dd[i]), 2); ****
      end;
      edit1.text := hex;
      

类似问题 »