实用代码-C#之IP地址和整数的互转

简介: 源码 1 [StructLayout(LayoutKind.Explicit)] 2 public struct IP 3 { 4 public IP(UInt32 value) 5 { 6 this.

源码

 1 [StructLayout(LayoutKind.Explicit)]
 2 public struct IP
 3 {
 4     public IP(UInt32 value)
 5     {
 6         this._text1 = 0;
 7         this._text2 = 0;
 8         this._text3 = 0;
 9         this._text4 = 0;
10         this._value = value;
11     }
12     public IP(Byte text1, Byte text2, Byte text3, Byte text4)
13     {
14         this._value = 0;
15         this._text1 = text1;
16         this._text2 = text2;
17         this._text3 = text3;
18         this._text4 = text4;
19     }
20     [FieldOffset(0)]
21     private UInt32 _value;
22     [FieldOffset(0)]
23     private Byte _text1;
24     [FieldOffset(1)]
25     private Byte _text2;
26     [FieldOffset(2)]
27     private Byte _text3;
28     [FieldOffset(3)]
29     private Byte _text4;
30 
31     public UInt32 Value
32     {
33         get { return this._value; }
34         set { this._value = value; }
35     }
36     public Byte Text1
37     {
38         get { return this._text1; }
39         set { this._text1 = value; }
40     }
41     public Byte Text2
42     {
43         get { return this._text2; }
44         set { this._text2 = value; }
45     }
46     public Byte Text3
47     {
48         get { return this._text3; }
49         set { this._text3 = value; }
50     }
51     public Byte Text4
52     {
53         get { return this._text4; }
54         set { this._text4 = value; }
55     }
56 
57     public override string ToString()
58     {
59         return String.Format("{0}.{1}.{2}.{3}", this._text1.ToString(), this._text2.ToString(),
60             this._text3.ToString(), this._text4.ToString());
61     }
62 
63     public static implicit operator IP(UInt32 value)
64     {
65         return new IP(value);
66     }
67     public static explicit operator UInt32(IP ip)
68     {
69         return ip._value;
70     }
71 }

测试

 1 class Program
 2 {
 3     static void Main(string[] args)
 4     {
 5         IP ip = new IP(192,168,1,1);
 6         Console.WriteLine(ip);
 7         UInt32 value = (UInt32)ip;
 8         Console.WriteLine(value);
 9         Console.WriteLine(ip.Value);
10         IP ip2 = (IP)(1234567);
11         Console.WriteLine(ip2);
12         
13         Console.ReadKey();
14     }
15 }

 

作者: Blackheart
目录
相关文章
|
1月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
|
3月前
|
C# 开发者 Windows
在VB.NET项目中使用C#编写的代码
在VB.NET项目中使用C#编写的代码
57 0
|
1月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
78 2
|
1月前
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
36 0
|
3月前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
589 0
|
3月前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
52 0
|
3月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
104 0
|
3月前
|
前端开发 程序员 API
从后端到前端的无缝切换:一名C#程序员如何借助Blazor技术实现全栈开发的梦想——深入解析Blazor框架下的Web应用构建之旅,附带实战代码示例与项目配置技巧揭露
【8月更文挑战第31天】本文通过详细步骤和代码示例,介绍了如何利用 Blazor 构建全栈 Web 应用。从创建新的 Blazor WebAssembly 项目开始,逐步演示了前后端分离的服务架构设计,包括 REST API 的设置及 Blazor 组件的数据展示。通过整合前后端逻辑,C# 开发者能够在统一环境中实现高效且一致的全栈开发。Blazor 的引入不仅简化了 Web 应用开发流程,还为习惯于后端开发的程序员提供了进入前端世界的桥梁。
352 0
|
3月前
|
C#
C# 跳过值班时间代码逻辑
C# 跳过值班时间代码逻辑
32 0
|
4月前
|
文字识别 自然语言处理 C#
印刷文字识别使用问题之C#发票识别的代码实例在哪里可以查看
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。