C#将int转换为十六进制[重复]

Posted

技术标签:

【中文标题】C#将int转换为十六进制[重复]【英文标题】:C# converting int to hex [duplicate] 【发布时间】: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 字符串。 【参考方案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]));

【讨论】:

以上是关于C#将int转换为十六进制[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中的十六进制操作[重复]

使用 0x (C#) 将十六进制字符串转换为 int32 [关闭]

C# Json 将十六进制文字字符串转换为 int

将十六进制字符串转换为 Int [重复]

在C#中将十六进制字符串转换为其数值[重复]

将int转换为具有固定位数的二进制[重复]