delphi汉字与十六进制内码互转
来源:互联网 发布:ceva 编程语言 编辑:程序博客网 时间:2024/05/09 01:00
delphi汉字与十六进制内码互转
在Delphi中新建一个项目,在窗体上放置三个EDIT,分别起名为EDIT1,EDIT2,EDIT3
EDIT1用于输入字符串;
EDIT2用于输入字符内码,同时用于显示EDIT1中的字符串内码.
EDIT3用于显示EDIT2中字符串内码对应的字符串.
两个按钮:
button1:字符串转内码
button2:内码转字符串
将下面的代码替换unit1中的内容,编译即可.
函数声明:
function stringtohex(str:string):string;//字符串转十六进制内码
function hextostring(str:string):string; //十六进制内码转字符串
function hextoint(hex:string):integer;// 十六进制字符转整数
http://p.blog.csdn.net/images/p_blog_csdn_net/oldguncm/EntryImages/20080828/Snap14.jpg
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
// procedure Edit2Change(Sender: TObject);
private
{ Private declarations }
edithex:string;
function stringtohex(str:string):string;
function hextostring(str:string):string;
function hextoint(hex:string):integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.stringtohex(str: string): string;
var
i:integer;
s:string;
begin
s:='';
for i:=1 to length(str) do begin
s:=s+inttohex(Integer(str[i]),2);
end;
result:=s;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=stringtohex(Edit1.Text );
end;
function TForm1.hextostring(str: string): string;
var
s,t:string;
i,j:integer;
p:pchar;
begin
s:='';
i:=1;
while i< length(str) do begin
t:=str[i]+str[i+1];
s:=s+chr(hextoint(t));
i:=i+2;
end;
result:=s;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
edit3.text:=hextostring(edit2.Text );
end;
function TForm1.hextoint(hex: string): integer;
Var
i: integer;
Function Ncf(num, f: integer): integer;
Var
i: integer;
Begin
result := 1;
If f = 0 Then exit;
For i := 1 To f Do
result := result * num;
End;
Function HexCharToInt(HexToken: char): Integer;
Begin
If HexToken > #97 Then
HexToken := Chr(Ord(HexToken) - 32);
{ use lowercase aswell }
Result := 0;
If (HexToken > #47) And (HexToken < #58) Then { chars 0....9 }
Result := Ord(HexToken) - 48
Else If (HexToken > #64) And (HexToken < #71) Then { chars A....F }
Result := Ord(HexToken) - 65 + 10;
End;
Begin
result := 0;
hex := ansiuppercase(trim(hex));
If hex = '' Then
exit;
For i := 1 To length(hex) Do
result := result + HexCharToInt(hex[i]) * ncf(16, length(hex) - i);
end;
{procedure TForm1.Edit2Change(Sender: TObject);
var
reg: TPerlRegEx;
begin
reg:=TPerlRegEx.Create(nil);
reg.Subject:=Edit2.Text;
reg.regex:='[0-9A-Fa-f]';
if reg.Match() then edithex:=edit2.Text
else edit2.Text:=edithex;
end;
}
end.
- delphi汉字与十六进制内码互转
- 汉字内码
- java的ascii(十六进制)与汉字互转
- C#代码段 -- 汉字与十六进制互转
- 汉字的内码和区位码与显示汉字原理
- 汉字的内码和区位码与显示汉字原理
- 汉字转十六进制 和十六进制转汉字
- C#二进制、十进制、 汉字, 十六进制互转
- C# 汉字转十六进制
- 汉字转十六进制
- 汉字内码与GB码C程序实现
- 汉字内码与GB码C程序实现
- 汉字内码与GB码C程序实现(转帖)
- C程序实现汉字内码与GB码
- 汉字内码漫谈
- 得到汉字的内码
- 汉字的Unicode 内码
- 汉字机内码
- 我的08暑假收获
- 数据库语句的优化
- [转]VI文档间复制
- 关于黑客的那点事
- cin.get和cin.getline的区别?
- delphi汉字与十六进制内码互转
- SQL Server数据库开发的二十一条军规(SQL收藏)
- SAP项目实施各阶段纪要(上)
- 精神亡了?精神永在!----读《挺起不屈的脊梁》有感
- 少年之文明与国之文明——---从奥运会看国人素质之飞跃
- linux学习!
- 注册表类的读写操作
- 现代密码学简史
- 强大的apache