2. 計算IP 相關位址
namespace Q2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{ // 10.168.137.88/26
var ip = textBox1.Text;
var bits = int.Parse(ip[(ip.IndexOf("/") + 1)..]);
ip = ip[0..ip.IndexOf("/")];
var binary = (string.Join("", ip.Split(".").Select(int.Parse).Select(r => Convert.ToString(r, 2).PadLeft(8, '0'))));
//MessageBox.Show(binary);
//var num = Convert.ToInt64(binary, 2);
//num >>= 32 - bits;
//num <<= 32 - bits;
//MessageBox.Show(Convert.ToString(num,2)+"");
var addr = binary[0..bits];
while (addr.Length < 32) addr += "0";
textBox2.Text = tip(addr);
textBox3.Text = tip(string.Join("", Convert.ToString((int)Math.Pow(2, 32-bits) - 1, 2).PadLeft(32, '0')
.Select((e, i) =>(char)( ((e - '0') | (addr[i] - '0')) + '0'))));
textBox4.Text = (Math.Pow(2, (32 - bits)) - 2).ToString();
}
string tip(string addr)
{
return string.Join(".",
addr.Chunk(8).Select(r => Convert.ToInt16(string.Join("", r), 2)));
}
}
}
Last updated