当前位置:  开发笔记 > 编程语言 > 正文

将IP地址转换并显示为二进制格式?

如何解决《将IP地址转换并显示为二进制格式?》经验,为你挑选了2个好方法。

在c#中是否有一个与ip地址10.13.216.41对话的方法

并显示为00001010.00001101.11011000.00101001.如果没有,怎么办呢?



1> Richard Szal..:

虽然我不会重写格式二进制代码(Larsenal的答案很好),但我会指出分裂为"." 不适用于IPv6地址.但是,如果使用IPAddress.Parse,它将适用于任何地址格式.然后,您可以使用IPAddress.GetAddressBytes来获取地址的每个部分.

所以代替:

input.Split('.').Select( ... )

做:

IPAddress.Parse(input).GetAddressBytes().Select( ... )



2> Larsenal..:
static string IPAddrToBinary( string input) {
   // assumes a valid IP Address format
   return String.Join(".", (input.Split('.').Select(x => Convert.ToString(Int32.Parse(x), 2).PadLeft(8, '0'))).ToArray());
}

下面是包含注释的版本,这可能是一个更易于理解:

static string IPAddrToBinary(string input)
{
    return String.Join(".", ( // join segments
        input.Split('.').Select( // split segments into a string[]

            // take each element of array, name it "x",
            //   and return binary format string
            x => Convert.ToString(Int32.Parse(x), 2).PadLeft(8, '0')

        // convert the IEnumerable to string[],
        // which is 2nd parameter of String.Join
        )).ToArray());
}

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有