有没有现成的函数将IP地址转化为数字?给出来马上给分!

解决方案 »

  1.   

    将IP地址转化为数字?什么意思?[转载]将某一主机域名解析为IP地址。
    使用 WinSock 单元;
    过程如下:
    function HostToIP(Name: string; var Ip: string): Boolean;
    var
      wsdata : TWSAData;
      hostName : array [0..255] of char;
      hostEnt : PHostEnt;
      addr : PChar;
    begin
      WSAStartup ($0101, wsdata);
      try
        gethostname (hostName, sizeof (hostName));
        StrPCopy(hostName, Name);
        hostEnt := gethostbyname (hostName);
        if Assigned (hostEnt) then
          if Assigned (hostEnt^.h_addr_list) then begin
            addr := hostEnt^.h_addr_list^;
            if Assigned (addr) then begin
              IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
              Result := True;
            end
            else
              Result := False;
          end
          else
            Result := False
        else begin
          Result := False;
        end;
      finally
        WSACleanup;
      end
    end; 测试时请在在线状态。测试代码:
    var
    IP: string;
    DNS: string;
    begin
      DNS := InputBox('输入DNS域名', '主机名称:', '');
      if HostToIp(DNS, IP) then showmessage(IP);
    end;
    作者:Latfi Baran我测试Kingron给出的用法时,hostEnt老是=nil。
    后来我在用gethostbyname(...)之前,加入WSAStartup(...),终于一切OK。
    Winsock单元中没有getaddressbyname()
      

  2.   

    [转载]解析IP地址为主机域名。使用 WinSock 单元;
    过程如下:
      function IPAddrToName(IPAddr : String): String;
      var
        SockAddrIn: TSockAddrIn;
        HostEnt: PHostEnt;
        WSAData: TWSAData;
      begin
        WSAStartup($101, WSAData);
        SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
        HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
        if HostEnt<>nil then
        begin
          result:=StrPas(Hostent^.h_name)
        end
        else
        begin
          result:='';
        end;
      end;
    测试时请在在线状态。测试代码:
    var
      Name: string;
    begin
      Name := InputBox('输入对方主机IP', '主机IP地址:', '');
      showmessage(IpAddrToName(Name));end;
    作者:Latfi Baran
      

  3.   

    错啦!我问的是将其变为32bit的数字如255变为ff,
      

  4.   

    function StrToStrs(Source,SplStr:String):TStrings;
    var s:String;
        i:Integer;
        ResList:TStrings;
    begin
      ResList:=TStringList.Create;
      s:=Source;
      i:=Pos(SplStr,S);
      while i<> 0 do
        begin
          ResList.Add(Copy(S,1,i-1));
          S:=Copy(S,i+1,Length(S)-i);
          i:=Pos(SplStr,S);
        end;
      ResList.Add(S);
      Result:=ResList;
    end;function GetFormatIP(IP:string):string;
    var StrsIP: TStrings;
        i:Integer;
    begin
      StrsIP := StrToStrs(IP,'.');
      Result := '';
      for i := 0 to 2 do
        Result := Result + Copy('000',1,3-Length(StrsIP[i]))+StrsIP[i] + '.';
      Result:=Result+copy('000',1,3-Length(StrsIP[3]))+StrsIP[3];
      Result := Copy(Result,1,15);
      StrsIP.Free;
    end;