在c#中是否有一个与ip地址10.13.216.41对话的方法
并显示为00001010.00001101.11011000.00101001.如果没有,怎么办呢?
虽然我不会重写格式二进制代码(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)
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)
| 归档时间: |
|
| 查看次数: |
5178 次 |
| 最近记录: |