【问题标题】:C# converting int to hex [duplicate]C#将int转换为十六进制[重复]
【发布时间】:2015-04-15 01:44:36
【问题描述】:

这是我在 Visual Studio 中编写的代码的一个小 sn-p。 在访问 uC 的内存时,我需要将 int add 转换为十六进制值(稍后转换为字符串)。但是,当我在调试期间查看变量时,它会将其显示为字符串“add16”。我可能做错了什么?

for (int add = 0; add <= 0xfffff; )
{
    for (int X = 0; X <= 15; X++)
    {
        string address = add.ToString("add16");
        addr = Convert.ToString(address);
        port.WriteLine(String.Format("WRBK:{0}:{1}", addr, parts[X]));
        add++;
    } 
}

【问题讨论】:

  • 这里的其他答案都可以,但我建议您查看numeric format strings 以了解为什么您的方式不起作用。您可以使用 ToString() 从 int 获取十六进制字符串,但您必须传入正确的格式字符串,例如add.ToString("X").
  • 我要指出,你不能“将 int 转换为 hex”,你只能将其转换为 hex 字符串。

标签: c#


【解决方案1】:

有一种简单且非常方便的方法,它接受一个整数并以十六进制表示法将其表示为字符串

string address = Convert.ToString(add, 16);

所以,也许你的内部循环可以重写为

port.WriteLine(String.Format("WRBK:{0}:{1}", Convert.ToString(add++, 16), parts[X]));

并使用standard numeric format strings specifiers 减少到

port.WriteLine(String.Format("WRBK:{0:X}:{1}", add++, parts[X]));

【讨论】:

  • 工作就像一个魅力。谢谢。
【解决方案2】:

您可以告诉 .NET 的 String.Format 对整数使用十六进制输出,消除任何代码到十六进制的转换,使用:

port.WriteLine(String.Format("WRBK:{0:X}:{1}", add, parts[X]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 2023-03-08
    • 2017-05-29
    • 1970-01-01
    • 2015-09-17
    • 2017-02-18
    • 1970-01-01
    • 2014-04-05
    相关资源
    最近更新 更多