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转换为十六进制[重复]的主要内容,如果未能解决你的问题,请参考以下文章