我有一个IP“192.168.232.189”,我需要使用c#将其转换为十六进制值“C0A8E8BD”。有人可以帮忙吗?
我看到了这个Converting IP Address to Hex,但我不完全确定如何实现c#
由于
答案 0 :(得分:2)
每个IP地址相当于2个十六进制数字(或8个二进制数字)。 因此,您的问题归结为将192.168.232.189拆分为192,168,232,189。然后转换每个部分(简单的十进制 - 十六进制转换)并将其重新组合在一起。
答案 1 :(得分:1)
使用IPAddress
类来解析地址(解析始终是最复杂的部分):
IPAddress address = IPAddress.Parse("192.168.232.189");
// Otherwise IPAddress would parse even IPv6 addresses
if (address.AddressFamily != AddressFamily.InterNetwork)
{
throw new ArgumentException("address");
}
byte[] bytes = address.GetAddressBytes();
string strAddress = string.Format("{0:X2}{1:X2}{2:X2}{3:X2}", bytes[0], bytes[1], bytes[2], bytes[3]);
答案 2 :(得分:1)
如果IP地址表示为String
,并且您希望结果为String
,则可以
'.'
将原始字符串拆分为IP地址部分可能的实施( Linq )是
int
答案 3 :(得分:1)
这是一个适合您的解决方案。首先将IP地址转换为数字,然后获取其HEX值。您可能希望将HEX反转为IP,可能在将来,因此此链接为Resource for IP conversions that I use.请参阅下面的输出。
public class Program
{
static void Main(string[] args)
{
string ip = "192.168.232.189";
string ipHexFormat = string.Format("{0:X}", ConvertIpToNumber(ip));
Console.WriteLine(ipHexFormat);
}
public static long ConvertIpToNumber(string dottedIpAddress)
{
long num = 0;
if (dottedIpAddress == "")
{
return 0;
}
else
{
int i = 0;
string[] splitIpAddress = dottedIpAddress.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
for (i = splitIpAddress.Length - 1; i >= 0; i--)
{
num += ((long.Parse(splitIpAddress[i]) % 256) * (long)Math.Pow(256, (3 - i)));
}
return num;
}
}
}
答案 4 :(得分:0)
你去吧
string ip = "192.168.232.189";
string hex = string.Concat(ip.Split('.').Select(x => byte.Parse(x).ToString("X2")));
.
string.Split()
byte.Parse()
转换为十六进制字符串byte
ToString("X2")
答案 5 :(得分:0)
您可以使用System.Net.IPAddress
IPAddress ip = IPAddress.Parse("192.168.232.189");
Console.WriteLine(ByteArrayToString(ip.GetAddressBytes()));
public static string ByteArrayToString(byte[] ba)
{
string hex = BitConverter.ToString(ba);
return hex.Replace("-","");
}
这是demo