inet_addr 和 汉字转数字方法

来源:互联网 发布:常用算法时间复杂度 编辑:程序博客网 时间:2024/06/08 19:03
函数inet_addr是如何实现将地址转换为数字的?
如:192.168.0.211 转成以后为 3540035776
即把192.168.0.211转成十六进制,如:C0A800[补位]D3,倒过来,D300A8C0(从高位取起)
然后把D300A8C0转成数字为3540035776即所求值。
在DELPHI中要引用这个函数,必须要引用winsock这个包,然后调用inet_addr(IP地址)这个函数
ip地址为字符串指针(Pchar类型),如PChar('192.168.000.211')这个值,返回的是DWORK型(即无符号的,占四个
字节的整型),和DELPHI的long word等同,如
User WinSock;
var
  abc:DWORD;
begin
abc := inet_addr(PChar('192.168.0.211'));
Edit1.Text := IntToStr(abc);
 
汉字转数字,首先要了解一个汉字占用几个字符?即几个字节?一个汉字占两个字节,即2个字符,2个ASC码值
,这样的话就好办多了,首先把汉字转成ASC码值,再把对应的每个ASC码值转成数字,即是所求的数字
如:我的ASC码值是0xced2[十六进制表示]转成:十进制52946,即为所要求的值,按ALT+52946即可验证此数字是
否准确。
查看方法:程序->附件->字符映射表->高级查看->windows 简体中文->按拼音分类的简体中文 ->查看到对应的
汉字
DELPHI中实现方法为:
数转汉字:   
    sName := '';
    for i := 1 to Length(FPassGroupName) do
    begin
      sName := sName + IntToStr(Integer(FPassGroupName[i]));
    end;
汉转数字:
for i := 1 to Length(sExp) do
          begin
            sNameCode := sNameCode + IntToStr(Integer(sExp[i]));;
          end;
          sStr := sStr + sNameCode;
 
原创粉丝点击