面试官:如果存取IP地址,用什么数据类型比较好 (C#版本)


受到这篇文章的影响,C#版本也可以实现IP的存取
MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换

逻辑右移就是不考虑符号位,右移一位,左边补0
算术右移需要考虑符合位,右移一位,若符号位为1,就在左边补1,否则补0
算术右移也可以进行有符号位的除法,右移n位就等于2的n次方
205的二进制数是11001101 右移一位
逻辑右移 [0]1100110
算术右移 [1]1100110

    public class IpLongUtils
    {
        /**
             * 把字符串IP转换成long
             *
             * @param ipStr 字符串IP
             * @return IP对应的long值
             */
        public static long ip2Long(string ipStr)
        {
            string[] ip = ipStr.ToLower().Split(new string[]{"http",":","/","."},System.StringSplitOptions.RemoveEmptyEntries);
            return (long.Parse(ip[0]) << 24) + (long.Parse(ip[1]) << 16)
                    + (long.Parse(ip[2]) << 8) + long.Parse(ip[3]);
        }

        /**
         * 把IP的long值转换成字符串
         *
         * @param ipLong IP的long值
         * @return long值对应的字符串
         */
        public static string long2Ip(long ipLong)
        {
            var ipStr= $"{ipLong >> 24}.{(ipLong >> 16) & 0xFF}.{(ipLong >> 8) & 0xFF}.{ipLong & 0xFF}";
            return ipStr;
        }
    }
Debug.WriteLine(IpLongUtils.ip2Long("http://192.168.1.1"));
Debug.WriteLine(IpLongUtils.ip2Long("192.168.0.1"));
Debug.WriteLine(IpLongUtils.long2Ip(3232235521L));
3232235777
3232235521
192.168.0.1

文章来源:https://www.cnblogs.com/androllen/p/15616725.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:Yarp 让系统内调度更灵活
下一篇:Roslyn+T4+EnvDTE项目完全自动化(1) ——类自动生成界面
评论列表

发表评论

评论内容
昵称:
关联文章

面试如果存取IP地址什么数据类型比较 (C#版本)
.NET获得IP地址
什么的编程字体:等宽字体
.NET C#教程初级篇 1-1 基本数据类型及其存储方式
当CDN服务不可时,前端有什么解决办法
C#8.0 可空引用类型
C#数据类型和常见数据库(SQLServer,MySQL,Oracle,SQLite)的数据类型对应关系
SQL Server 数据库类型和.NET数据类型映射关系
C#判断类型是否可空
windows补丁网下载地址
也谈string.Join和StringBuilder的性能比较
扫盲篇-什么是分布式任务调度
C# LINQ中SUM,MAX,MIN时如果数据为空,报错NULL
SQL Server 各版本官方下载地址
版本记录
.Net Core——SignalR撸个游戏
ASP.NET Core网教程,资料查找
01、收款播报机通用版本网络协议
C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
客户端发送数据

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码