代码之家  ›  专栏  ›  技术社区  ›  MusiGenesis

如何将无符号整数值转换成像255.255.255.255这样的IP地址?

  •  2
  • MusiGenesis  · 技术社区  · 14 年前

    我正在使用一个API,它将服务器的IP地址作为 unsigned int NSString 显示IP地址的格式是“255.255.255.255”?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Jasarien    14 年前

    我以前用过这个:

    - (NSString *)ip
    {
        unsigned int ip = //however you get the IP as unsigned int
        unsigned int part1, part2, part3, part4;
    
        part1 = ip/16777216;
        ip = ip%16777216;
        part2 = ip/65536;
        ip = ip%65536;
        part3 = ip/256;
        ip = ip%256;
        part4 = ip;
    
        NSString *fullIP = [NSString stringWithFormat:@"%d.%d.%d.%d", part1, part2, part3, part4];
    
        return fullIP;
    }
    
        2
  •  4
  •   codymanix    14 年前

    我不确定在目标C中是如何实现的,但由于它是C的超集,您可以从以下开始:

    unsigned ip = whateverNumber;
    
    char firstByte = ip & 0xff;
    char secondByte = (ip>>8) & 0xff;
    char thirdByte = (ip>>16) & 0xff;
    char fourthByte = (ip>>24) & 0xff;
    
    char buf[40];
    
    sprintf(buf, "%i.%i.%i.%i", firstByte, secondByte, thirdByte, fourthByte);
    

    代码没有经过测试,但应该以这种方式工作。

        3
  •  4
  •   MusiGenesis    14 年前
    in_addr_t addr = your_addres_as_integer; 
    const char *buf = addr2ascii(AF_INET, &addr, sizeof(addr), NULL);
    NSString *result = [NSString stringWithCString:buf 
                        encoding:NSUTF8StringEncoding];