【问题标题】:Writing uint out as Hex not Int [duplicate]将 uint 写为 Hex 而不是 Int [重复]
【发布时间】: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 如果你想要大写十六进制字符。

标签: c# hex


【解决方案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") 将其转换为十六进制
    猜你喜欢
    • 2010-09-05
    • 2019-06-04
    • 2015-07-25
    • 2021-12-26
    • 2023-04-04
    • 2013-01-15
    • 2014-07-31
    相关资源
    最近更新 更多