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

Xai*_*oft 2 c#

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

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

Ric*_*lay 8

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

所以代替:

input.Split('.').Select( ... )
Run Code Online (Sandbox Code Playgroud)

做:

IPAddress.Parse(input).GetAddressBytes().Select( ... )
Run Code Online (Sandbox Code Playgroud)


Lar*_*nal 7

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());
}
Run Code Online (Sandbox Code Playgroud)

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

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<string> to string[],
        // which is 2nd parameter of String.Join
        )).ToArray());
}
Run Code Online (Sandbox Code Playgroud)