【问题标题】:how to convert 0x8080 to 8080 int? [closed]如何将 0x8080 转换为 8080 int? [关闭]
【发布时间】:2011-12-11 17:18:57
【问题描述】:

我该怎么做?

int a = 0x8080;

可以转换成

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

【问题讨论】:

  • 你不是说0x8080吗?你想做什么?
  • 您是否有一个包含“0x8080”的字符串,并且您想将其转换为值 0x8080 的整数?
  • 你能解释一下你想要完成什么吗? 0x808080和8080是什么关系?
  • 你的问题毫无意义。请提供更多上下文。 (或数据类型)
  • 现在不是没有意义而是错误的。这不是你想要做的。

标签: c# .net bit-manipulation


【解决方案1】:

您可以像这样将数字转换为十六进制:0x8080.ToString("x6")
6 是小数位数。

更多详情请参阅documentation

【讨论】:

  • 正是它。非常感谢!
  • 下次,请准确说明您想要什么。如果您问过如何将 int 转换为十六进制字符串,您会立即得到这个答案(可能有五个)
【解决方案2】:

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

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

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

【讨论】:

  • 正要发布这个。我认为他需要和整数回来。不过很难确定。
【解决方案3】:

编辑根据您的编辑,我必须说不可能。您尝试将十六进制值转换为相应的 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-20
    • 2018-05-11
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多