如何将十六进制转换为int

时间:2016-05-19 08:02:29

标签: c#

首先,我收到数据并将其转换为字符串。

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

4 个答案:

答案 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);
}

MSDN Article

答案 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);