2007-08-08
ip2long和long2ip的学习程序
关键字: D语言 ip2long long2ip 字符串
这2个是PHP里面的常用函数,用D重新包装了一下。
虽然可以使用,但没有错误判断。
顺便练习了一下C字符串和D字符串之间的转换。
虽然可以使用,但没有错误判断。
顺便练习了一下C字符串和D字符串之间的转换。
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));
}
发表评论
- 浏览: 14938 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最新评论
-
Dmd编译器学习笔记
我看了 一些D语言的一些介绍,对于的产生还是有的疑惑.
-- by zhangtianfeng -
Dmd编译器学习笔记
.so文件是用-L来指定的,比如gcc的-levent是用来链接libevent ...
-- by qiezi -
Ddoc文档注释学习笔记
...
-- by tomqyp -
Ddoc文档注释学习笔记
转换成其他语言?是说用汉字吗?
-- by sofire -
Ddoc文档注释学习笔记
Good work. 不知道上面的定义的节名能不能自动转换成其他语言,我估计很 ...
-- by Colorful






评论排行榜