将IP转换为二进制文件并转换回字符串

时间:2015-07-29 07:22:06

标签: c#

我想将ipv4和ipv6地址转换为二进制并返回字符串。

例如192.168.1.1到11000000.10101000.00000001.00000001以及11000000.10101000.00000001.00000001到192.168.1.1

我发现这篇文章:link1但它只适用于ipv4。

我也找到了这个:link2所以我试过这个:

IPAddress ip = IPAddress.Parse("192.168.1.1");
textBox1.Text = ip.GetAddressBytes().ToString();

但它在文本框中显示System.Byte []。

长话短说我想使用在ipv4和ipv6中都能运行的稳定转换方法。(一个dll可能很棒。)

谢谢。

3 个答案:

答案 0 :(得分:2)

转换为二进制文件:

var address = IPAddress.Parse("192.168.1.1");
var bytes = address
    .GetAddressBytes()
    .Select(number => Convert.ToString(number, 2).PadLeft(8, '0'));
var binaryAddress = string.Join(".", bytes);
// => 11000000.10101000.00000001.00000001

转回来:

var bytes = binaryAddress
    .Split('.')
    .Select(@byte => Convert.ToInt32(@byte, 2));
var address = IPAddress.Parse(string.Join(".", bytes));
// => 192.168.1.1

答案 1 :(得分:1)

IPAddress ip = IPAddress.Parse("192.168.1.1");
textbox1.Text = ip.GetAddressBytes().Select(x => x.ToString()).Aggregate((x,y) => x + y);

这是你想要的吗?

答案 2 :(得分:1)

这是您的解决方案: 制作两个功能,使其保持通用,您也可以进一步使用 此方法用于将字符串转换为二进制文件:

public static string StringToBinary(string ip) {

StringBuilder sb = new StringBuilder();

foreach(ip.ToCharArray()中的charc)  {

sb.Append(Convert.ToString(c,2).PadLeft(8,' 0'));

}

返回sb.ToString();

}

此方法用于将二进制转换为字符串:

公共静态字符串BinaryToString(string ip) {

列出byteList = new List();

for(int i = 0; i< ip.Length; i + = 8)  {

byteList.Add(Convert.ToByte(ip.Substring(i,8),2));

}

返回Encoding.ASCII.GetString(byteList.ToArray());

}

现在使用它,

IPAddress ip = IPAddress.Parse(" 192.168.1.1");

//到二进制

textBox1.Text = StringToBinary(ip.GetAddressBytes()。ToString());

//收件人

textBox1.Text = BinaryToString(ip.GetAddressBytes()。ToString());