将 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 [重复]

C++中int,Uint,uint16等有啥区别以及用处

接口转换:interface {}是int64,而不是[] uint8

获取 Chainlink ETH/USD 价格反馈答案为 uint256 而不是 int solidity