在c#中是否有一个与ip地址10.13.216.41对话的方法
并显示为00001010.00001101.11011000.00101001.如果没有,怎么办呢?
虽然我不会重写格式二进制代码(Larsenal的答案很好),但我会指出分裂为"." 不适用于IPv6地址.但是,如果使用IPAddress.Parse,它将适用于任何地址格式.然后,您可以使用IPAddress.GetAddressBytes来获取地址的每个部分.
所以代替:
input.Split('.').Select( ... )
做:
IPAddress.Parse(input).GetAddressBytes().Select( ... )
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 IEnumerableto string[], // which is 2nd parameter of String.Join )).ToArray()); }