将 uint 写为 Hex 而不是 Int [重复]
Posted
技术标签:
【中文标题】将 uint 写为 Hex 而不是 Int [重复]【英文标题】:Writing uint out as Hex not Int [duplicate] 【发布时间】:2016-02-02 05:13:29 【问题描述】:在 c# 中,我将错误代码定义为
public const uint SOME_ERROR= 0x80000009;
我想将 0x80000009 写入文本文件,现在我正在尝试
private static uint ErrorCode;
ErrorCode = SomeMethod();
string message = "Error: 0.";
message = string.Format(message, ErrorCode);
但这会将其写为 int,例如“2147483656”,我怎样才能将其作为十六进制写到文本文件中?
【问题讨论】:
ToString("x8")
或 Format("0:x8")
大写 X
如果你想要大写十六进制字符。
【参考方案1】:
您需要使用X
格式说明符将uint
输出为十六进制。
所以在你的情况下:
String.Format(message, ErrorCode.ToString("X"));
或者
string message = "Error: 0:X."; // format supports format specifier after colon
String.Format(message, ErrorCode);
在 C# 6 及更高版本中,您还可以使用字符串插值:
string message = $"Error: ErrorCode:X";
您可能还想使用 X8
和 8 指定所需的字符数,以便对齐所有错误代码。 uint
有 4 个字节大,每个字节可以用 2 个十六进制字符表示,因此 uint
总共有 8 个十六进制字符。
string message = $"Error: ErrorCode:X8";
更多详情请参阅Custom numeric format specifiers at Microsoft Docs。
【讨论】:
【参考方案2】:您不必投射它。干脆做
message = string.Format(message, ErrorCode);
如果您的方法 SomeMethod()
返回一个 int
,那么您可以像这样将您的 int 转换为 Hex:
message = string.Format(message, ErrorCode.ToString("X"));
【讨论】:
无论我是否施放,我都会得到相同的输出数字,但是施放它没用。 @Lawtonj94:- 如果您的方法SomeMethod()
返回 int,那么您可以使用 .ToString("X")
将其转换为十六进制以上是关于将 uint 写为 Hex 而不是 Int [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Hex() 函数返回一个字符串而不是一个 int hex?
数组写为 name[x, y] 而不是 name[x][y] [重复]
将两个 uint16_t 数字相乘得到一个 int [重复]