Objective-C实现字符串IP地址转DWORD地址(附完整源码)
发布日期:2025-04-25 18:18:19 浏览次数:3 分类:精选文章

本文共 1722 字,大约阅读时间需要 5 分钟。

Objective-C实现字符串IP地址转DWORD地址

在Objective-C中,如何将字符串格式的IP地址转换为DWORD地址是一个常见的网络开发问题。通过使用标准的网络编程函数,我们可以实现这一目标,而inet_pton函数正是其中一个强大的工具。

下面将详细介绍如何在Objective-C中使用inet_pton函数将字符串IP地址转换为32位无符号整数(DWORD)。

import <Foundation/Foundation.h>

import <arpa/inet.h>

@interface IPConverter : NSObject { NSString *ipString; }

@property (nonatomic, retain) NSString *ipString; @end

@implementation IPConverter

  • (NSData *)ipAddressToData:(NSString *)ipString { struct sockaddr_in sockaddr; memset(&sockaddr, 0, sizeof(struct sockaddr_in)); sockaddr.sin_len = sizeof(struct sockaddr_in); sockaddr.sin_family = AF_INET;

    // 将IP地址字符串填充到sockaddr.sin_addr if (strlen(ipString) > sizeof("255.255.255.255")/2) { return nil; }

    if (inet_pton(AF_INET, ipString, &sockaddr.sin_addr) == -1) { return nil; }

    NSData *ipData = [NSData dataWithBytes:sockaddr.sin_addr]; return ipData; }

  • (uint32_t)ipAddressToInteger:(NSData *)ipData { uint32_t ipAddress; memcpy(&ipAddress, ipData.bytes, sizeof(uint32_t)); return ipAddress; }

  • (NSString *)integerToIpAddress:(uint32_t)ipAddress { struct sockaddr_in sockaddr; memset(&sockaddr, 0, sizeof(struct sockaddr_in)); sockaddr.sin_len = sizeof(struct sockaddr_in); sockaddr.sin_family = AF_INET;

    if (ipAddress == 0) { return @"0.0.0.0"; }

    if (ipAddress & 0x80000000) { return [NSString stringWithFormat:@"%d.%d.%d.%d", (ipAddress >> 24), (ipAddress >> 16) & 0xFF, (ipAddress >> 8) & 0xFF, 0]; }

    if (ipAddress & 0x40000000) { return [NSString stringWithFormat:@"%d.%d.%d.%d", (ipAddress >> 24), (ipAddress >> 16) & 0xFF, (ipAddress >> 8) & 0xFF, 0]; }

    // 继续类似的处理过程,逐位解析IP地址的四个字节

    return [NSString stringWithFormat:@"%d.%d.%d.%d", (ipAddress >> 24), (ipAddress >> 16) & 0xFF, (ipAddress >> 8) & 0xFF, ipAddress & 0xFF]; }

@end

上一篇:Objective-C实现字符串jaro winkler算法(附完整源码)
下一篇:Objective-C实现字符串boyer moore search博耶摩尔搜索算法(附完整源码)

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月24日 10时59分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章