首先,我收到数据并将其转换为字符串。
data = client.Receive(ref ep);
string received = BitConverter.ToString(data);
我得到的字符串是 FF-FF-FF-FF-66-0A 。 我尝试从中获取INT值。
foreach (var item in received)
{
int rec = Convert.ToInt32(item);
int rec = Convert.ToInt32(item,16);
//IF I try second line I get error
//cannot convert from 'int' to 'system.iformatprovider'
}
使用第一行 int rec = Convert.ToInt32(item); 我得到的数字 70 70 70 70 45 45 70 70 70 70
正如我所知,我正在转换F> 70和F> 70,但是如何通过获取FF>来转换FF并使其工作255
答案 0 :(得分:5)
你去吧
int[] result = "FF-FF-FF-FF-66-0A".Split('-').Select(x => Convert.ToInt32(x, 16)).ToArray();
答案 1 :(得分:1)
使用ToInt32(x,16);
string[] hexValuesSplit = received.Split('-');
foreach (String hex in hexValuesSplit)
{
// Convert the number expressed in base-16 to an integer.
int value = Convert.ToInt32(hex, 16);
Console.WriteLine("hexadecimal value = {0}, int value = {1}",
hex, value);
}
答案 2 :(得分:1)
这是您可能想要尝试的替代方法。
由于您说您正在解析IP地址,因此可以执行以下操作:
string x = "FF-FF-FF-FF-66-0A";
var ipAddress = IPAddress.Parse(x.Replace("-", ":") + ":0:0");
请注意,您使用的是最后两个值为0的IPv6(我认为),因此我必须添加":0:0"在解析它之前到字符串的末尾。
(注意:目前还不清楚你实际使用的IP方案,但在我看来应该有一些方法让你使用IPAddress
类来解析它们。)
答案 3 :(得分:0)
使用 int intNumber = int.Parse(" FF",system.Globalization.NumberStyle.HexNumber);