如何将0x8080转换为8080 int?

时间:2011-12-11 17:18:57

标签: c# .net bit-manipulation

我是怎么做到的?

int a = 0x8080;

可以将其转换为

int b = MagicMethod(a); //output:8080

3 个答案:

答案 0 :(得分:1)

编辑根据您的编辑,我必须说不可能。您尝试在相应的int值中转换十六进制值。这仅适用于不包含十六进制数字“A”到“F”的十六进制值。如果你受限于此,你可以

private int MagicConvert(int value)
{
    string intValue = value.ToString("X");
    int result = 0;
    for (int i = 1; i <= intValue.Length; i++)
    {
        int digit;
        if (!int.TryParse(intValue.Substring(intValue.Length - i, 1), out digit))
        {
            throw new ArgumentException("Hex value contains digits in the range of 'A' to 'F'.");
        }
        result += (int)Math.Pow(10, i - 1) * digit;
    }
    return result;
}

答案 1 :(得分:1)

如果您有一个字符串“0x8080”并想将其转换为整数0x8080,那么您可以这样做:

string s = "0x8080";
uint x = uint.Parse(s.Substring(2), System.Globalization.NumberStyles.AllowHexSpecifier);

UPDATE 他在上面写道“实际上,我收到了类似于0x808800的内容,我需要将其转换为#808080,以便在backColor中使用。”这对我来说意味着他需要将整数0x80808000转换为颜色,这可以使用Color.FromArgb完成(参见MSDN)。

答案 2 :(得分:1)

您可以将数字转换为十六进制,如下所示:0x8080.ToString("x6")
6是小数位数。

有关详细信息,请参阅documentation