C#之IP地址和整数互转的小例子

源码:


代码如下:

[StructLayout(LayoutKind.Explicit)]
 public struct IP
 {
     public IP(UInt32 value)
     {
         this._text1 = 0;
         this._text2 = 0;
         this._text3 = 0;
         this._text4 = 0;
         this._value = value;
     }
     public IP(Byte text1, Byte text2, Byte text3, Byte text4)
     {
         this._value = 0;
         this._text1 = text1;
         this._text2 = text2;
         this._text3 = text3;
         this._text4 = text4;
     }
     [FieldOffset(0)]
     private UInt32 _value;
     [FieldOffset(0)]
     private Byte _text1;
     [FieldOffset(1)]
     private Byte _text2;
     [FieldOffset(2)]
     private Byte _text3;
     [FieldOffset(3)]
     private Byte _text4;

public UInt32 Value
     {
         get { return this._value; }
         set { this._value = value; }
     }
     public Byte Text1
     {
         get { return this._text1; }
         set { this._text1 = value; }
     }
     public Byte Text2
     {
         get { return this._text2; }
         set { this._text2 = value; }
     }
     public Byte Text3
     {
         get { return this._text3; }
         set { this._text3 = value; }
     }
     public Byte Text4
     {
         get { return this._text4; }
         set { this._text4 = value; }
     }

public override string ToString()
     {
         return String.Format("{0}.{1}.{2}.{3}", this._text1.ToString(), this._text2.ToString(),
             this._text3.ToString(), this._text4.ToString());
     }

public static implicit operator IP(UInt32 value)
     {
         return new IP(value);
     }
     public static explicit operator UInt32(IP ip)
     {
         return ip._value;
     }
 }

测试:


代码如下:

class Program
 {
     static void Main(string[] args)
     {
         IP ip = new IP(192,168,1,1);
         Console.WriteLine(ip);
         UInt32 value = (UInt32)ip;
         Console.WriteLine(value);
         Console.WriteLine(ip.Value);
         IP ip2 = (IP)(1234567);
         Console.WriteLine(ip2);

Console.ReadKey();
     }
 }

(0)

相关推荐

  • C#编程实现四舍五入、向上及下取整的方法

    本文实例讲述了C#编程实现四舍五入.向上及下取整的方法.分享给大家供大家参考,具体如下: 在处理一些数据时,我们希望能用"四舍五入"法实现,但是C#采用的是"四舍六入五成双"的方法,如下面的例子,就是用"四舍六入五成双"得到的结果: double d1 = Math.Round(1.25, 1);//1.2 double d2 = Math.Round(1.24, 1);//1.2 double d3 = Math.Round(1.26, 1);

  • c#匹配整数和小数的正则表达式

    匹配整数的一种表达式: Regex.IsMatch(inputerstr, "^([0-9]{1,})$") 其中Inputerstr是要匹配的字符串 这个表达式仅匹配整数,如果是整数形式返回true,否则为false 匹配小数格式的表达式: Regex.IsMatch(inputerstr, "^([0-9]{1,}[.][0-9]*)$") 其中Inputerstr是要匹配的字符串 这个表达式仅匹配数字中有小数点格式的数字,如果是带有小数点格式的纯数字,返回tr

  • C#动态调整数组大小的方法

    本文实例讲述了C#动态调整数组大小的方法.分享给大家供大家参考.具体如下: 通常,我们创建一个数组后就不能调整其长度,但是Array类提供了一个静态方法CreateInstance用来创建一个动态数组,所以我们可以通过它来动态调整数组的长度. namespace ArrayManipulation { Class Program { static void Main (String[] args) { int[] arr = new int[]{1,2,3}; PrintArr(arr); ar

  • C#四舍五入(函数)用法实例

    效果: 说明:输入小数,然后输入要保留的位数, 事件:点击Button 代码: 复制代码 代码如下: public static double Round(double d, int i)        {            if (d >= 0)            {                d += 5 * Math.Pow(10, -(i + 1));//求指定次数的指定次幂            }            else            {         

  • C#数组学习相关资料整理

    数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面.在 C# 中,将方括号放在标识符后是不合法的语法. int[] table; // not int table[]; 另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分.这使您可以声明一个数组并向它分配 int 对象的任意数组,而不管数组长度如何. 复制代

  • c#中的浮点型转整形的舍取 四舍五入和银行家舍入实现代码

    Double显示转换int 复制代码 代码如下: static void Main(string[] args) { Console.WriteLine("5.1~{0}", (int)5.1d); Console.WriteLine("5.5~{0}", (int)5.5d); Console.WriteLine("5.8~{0}", (int)5.8d); Console.WriteLine("2.1~{0}", (int

  • C#使用round函数四舍五入的方法

    本文实例讲述了C#使用round函数四舍五入的方法.分享给大家供大家参考.具体分析如下: C#中的round函数实际上不是真正的四舍五入函数,一般的程序设计语言的round函数也都不是四舍五入函数,而是银行家舍入法函数,也就是"四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一" 但C#中的round函数似乎也没有完全遵循这个规则,我们来看看微软官方给的范例: using System; public class Example { public stati

  • C#中Decimal类型截取保留N位小数并且不进行四舍五入操作

    一.问题描述 开发中,需要使Decimal类型数据保留小数点后的两位小数且不需要进行四舍五入操作,即直接截取小数点后面的两位小数即可.例如:1.245M --> 1.24,而不是1.25 使用Decimal.Round()方法可以实现保留Decimal类型数据小数点后的若干位小数,但是该方法会进行四舍五入操作,而不是直接截取.所以,该方法不可取,在网上搜寻一番也没有找到合适的方法,便自己实现了一个截取Decimal类型数据小数点后若干位的方法. 二.详细的实现代码 using System; n

  • C#之IP地址和整数互转的小例子

    源码: 复制代码 代码如下: [StructLayout(LayoutKind.Explicit)] public struct IP {     public IP(UInt32 value)     {         this._text1 = 0;         this._text2 = 0;         this._text3 = 0;         this._text4 = 0;         this._value = value;     }     public

  • IP地址与整数之间的转换实现代码(asp.net)

    知识点:一个二进制数,按位左移n位,就是把该数的值乘以2的n次方 二进制除二即右移一位 1.IP地址转换为整数 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个无符号32为整数. 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数 10 00001010 0 00000000 3 00000011 193 11000001 组合起来即为:00001010 00000000 00000011 1100000

  • C# IP地址与整数之间转换的具体方法

    IP地址与整数之间的转换 1.IP地址转换为整数 原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个无符号的32位整数. 举例:一个ip地址为10.0.3.193 每段数字 相对应的二进制数10 000010100 000000003 00000011193 11000001组合起来即为:00001010 00000000 00000011 11000001,转换为10进制就是:167773121,即该IP地址转换后的数字就是

  • python IP地址转整数

    背景 今天有人问我 "为什么数据库中有人推荐使用 int 类型来保存 IP 地址?".现在(2020年)来看这个东西已经有点过时了,一方面是磁盘空间不在那么贵,另一方面是 IPv6 与这条法则不兼容. 下面我们就来看一下把 IPv4 地址转换成整数的原理和收益各是什么. 转换的原理 一个 IPv4 类的地址共分为四个部分 0.0.0.0 然而每一个部分的取值范围都在 0 ~ 255:也就是说每一个部分都可以用一个字节来保存,总共写个字节就够了,4 个字节不就是 int 吗? 第一步 把

  • JS中IP地址与整数相互转换的实现代码

    主要用于在js判断用户输入的一个ip段是否合法,如:192.168.1.11-192.168.1.134 实现代码一: function ipToNumber(ip) { var num = 0; if(ip == "") { return num; } var aNum = ip.split("."); if(aNum.length != 4) { return num; } num += parseInt(aNum[0]) << 24; num +=

  • 基于Java解决华为机试实现整数与IP地址间的转换 

    目录 1.简述 示例1 2.代码实现 1.简述 描述: 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数. 举例:一个ip地址为10.0.3.193 每段数字                相对应的二进制数 10                          00001010 0                            00000000 3                            0000

  • java实现ip地址与十进制数相互转换

    先看实例 代码如下 复制代码 代码如下: classip { privatestaticlongiptolong(stringstrip) //将127.0.0.1形式的ip地址转换成10进制整数,这里没有进行任何错误处理 { intj=0; inti=0; long[]ip=newlong[4]; intposition1=strip.indexof("."); intposition2=strip.indexof(".",position1+1); intpos

  • 通过Web Service实现IP地址查询功能的示例

    实例01 实现一个简单的Web服务访问 本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省.市.地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件中直接附加数据库文件,这里将不再介绍导入数据的过程. 程序实现步骤如下: (1)打开Visual Studio 2017开发环境,然后依次点击文件→新建→项目,在弹出的新建项目对话框中选择"ASP.NET Web应用程序"选项,然后更改项目名称和项目路径,如图12.1所示. 图12.1 新

  • 基于PHP实现通过照片获取ip地址

    在本教程中,我们将学习如何用一张照片来盗取ip地址.我的想法是通过修改.htaccess文件,将jpg文件当作php文件来解析. 下面就是我们需要向.htaccess中添加的代码: AddHandler application/x-httpd-php5 .jpg 然后将下面的代码复制到记事本中,命名为grabber.jpg <?php $fh = fopen('ip_list.txt', 'a'); fwrite($fh, $_SERVER['REMOTE_ADDR']." ")

  • php隐藏IP地址后两位显示为星号的方法

    本文实例讲述了php隐藏IP地址后两位显示为星号的方法.分享给大家供大家参考.具体实现方法如下: 我们在很多的公共网站中都会有碰到显示用户的IP时后面几个IP段显示为星号了,这样很好的保护了用户隐私了,感兴趣的朋友可以一起来看看. php正则格式化IP地址,隐藏后一位. 例子 复制代码 代码如下: <?php //隐藏后一位 return preg_replace('/(\d+)\.(\d+)\.(\d+)\.(\d+)/is',"$1.$2.$3.*",$ip);   //隐藏

随机推荐