ip2long和long2ip的学习程序

这2个是PHP里面的常用函数,用D重新包装了一下。
虽然可以使用,但没有错误判断。

顺便练习了一下C字符串和D字符串之间的转换。

[code]
import std.stdio;
import std.string;

extern(C)
{
uint ntohl(uint);
uint inet_addr(char *cp);
uint htonl(uint hostlong);
char* inet_ntoa(in_addr);
struct in_addr
{
uint s_addr;
}
}

ulong ip2long(char[] ip)
{
return ntohl(inet_addr(toStringz(ip)));
}

char[] long2ip(ulong ip)
{
in_addr myaddr;
myaddr.s_addr = htonl(ip);
return toString(inet_ntoa(myaddr));
}

void main()
{
char* c_str1;
char* c_str2;
char* c_str3;
char[] d_str1;
char[] d_str2;
char[] d_str3;

c_str1 = "C string";
d_str1 = "D string";

// C字符串 转换到 D字符串
d_str2 = toString(c_str1);

writefln("c to d: %s", d_str2);
printf("c to d: %.*s"\n, d_str2);

// D字符串 转换到 C字符串
c_str2 = cast(char*) (d_str1 ~ "\0");
c_str3 = toStringz(d_str1);

printf("d to c: %s"\n, c_str2);
printf("d to c: %s"\n, c_str3);

// cast(char*)转换和直接str.ptr是一样的,不保证有\0结尾,除非运气好刚好碰上一个。
//c_str2 = cast(char*) (d_str1); //error
//printf("%s"\n, d_str1.ptr); // error

writefln(ip2long("192.0.34.166"));
writefln(long2ip(3221234342));
}
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值