in_addr,char* ,unsigned long 之间的互相转换
来源:互联网 发布:绘画板 知乎 编辑:程序博客网 时间:2024/05/12 11:32
http://blog.csdn.net/bulerain/article/details/6842636
在网络编程中经常会用到in_addr,char* ,unsigned long表示的IP地址(指定的是IP4),winsock 提供inet_addr(char* -> unsigned long),inet_ntoa(in_addr -> char*),在实际应用中,不同数据类型总是需要转换,如果每一次转换需要调用函数转换,这样会很繁琐。
通常,一个IP(v4)地址是一个32位无符号的整数类型,即unsigned long,而in_addr结构可以用来表现每个8位的数值(u_char),in_addr结构实际上也是一个32位无符号的整数类型,也就是in_addr::S_un::S_addr,这样in_addr可以和unsigned long直接转换。为了便于阅读,并提供了char*的形式来表示ip地址。inet_addr用于从 char* 类型到 unsigned long的转换;inet_ntoa提供了从in_addr -> char*的转换。
虽然 in_addr,char* ,unsigned long之间可以通过函数来转换,但编写代码的过程很繁琐,几乎每一次转换调用都需要调用函数,而且很容易忘记函数。既然这几个类型可以互相转换,那就可以通过一个类来封装这些类型,使得这些类型可以在类的封装下实现互相转换。
下面使用一个命名为CIPv4AddressForm的类封装上述的三种数据类型,并在类实现几个常用的方法,比如得到数据成员的数值、在不同类型之间直接转换(实现运算符重载),不同数据类型之间直接赋值。
- in_addr,char* ,unsigned long 之间的互相转换
- in_addr,char* ,unsigned long 之间的互相转换
- unsigned char 转换为 unsigned long方法
- QString int long char*之间的转换
- array<Byte>^ unsigned char* char* 之间的转换
- C语言unsigned char、char与int之间的转换
- wchar_t*和char*之间的互相转换
- BSTR、CString、char*之间的互相转换
- QString,char*,string之间的互相转换
- CString和char *之间的互相转换
- char,unsigned char,unsigned short,有符号和无符号之间的转换
- qt下unsigned char *与QString之间的相互转换
- char 和 unsigned 与int 之间的转换
- char 和 unsigned 与int 之间的转换
- string char* const char*之间互相转换
- wchar_t*和char*之间的互相转换的那些事
- wchar_t*和char*之间的互相转换的那些事
- wchar_t*和char*之间的互相转换的那些事
- C#桌面歌词原理
- 用Keil-MDK开发TQ2440裸机程序入门教程
- HTTP协议、简介、会话方式
- 曹政:产品经理如何培养细节意识
- Android 培训计划:如何从功能机时代的 C/C++ 工程师转型至 Android 工程师
- in_addr,char* ,unsigned long 之间的互相转换
- MFC 自绘窗口非客户区
- 数理逻辑:命题逻辑(5)可推出关系
- 《新白发魔女传》之自创歌曲 《绝缘》
- linux下 c++多线程的实现
- 20.输入一个表示整数的字符串,把该字符串转换成整数并输出
- JS闭包的概念
- LearnVSXNow! #14- VSCT文件基础
- 数理逻辑:命题逻辑(6)对偶关系