【问题标题】:Why use a hex literal for an int?为什么对 int 使用十六进制文字?
【发布时间】:2017-03-02 04:33:34
【问题描述】:

在阅读我遇到的一些现有代码时:

public static readonly int MaxSize = 0x1000;

这让我想知道为什么要使用十六进制文字。在这种情况下,MaxSize 用于分页。

我最接近的是:

十六进制数是表示整数值的便捷方式, 准确地表示该整数在内存中存储的位。

https://csharp.2000things.com/2010/08/28/72-hexadecimal-numbers/

这在一定程度上是有道理的,我很想听听对此用例的更详细解释,特别是“准确表示存储在内存中的位”。

【问题讨论】:

  • 例如描述位掩码。但是对于这个用例,尽管试图混淆其他程序员或试图成为一个“酷”的程序员,但我没有看到任何有意义的解释使用十六进制文字。
  • 如果不询问编写它的程序员或查看它的使用上下文,很难说出这背后的原因。最大尺寸到底是多少?
  • 在某些情况下,规范中的(错误)状态以十六进制文字表示,因此为了匹配规范,开发人员也可以在代码中以十六进制文字表示相应的值。
  • 谢谢@ckruczek 我已经看到它在这个代码库中用于位掩码,但我已经在它的上下文中添加了更多细节。我同意一些程序员可能会使用这种技术来显得很酷且值得一提,但是了解我的前辈和所进行的严格代码审查,我不怀疑在这个例子中是这种情况。
  • 这是程序员的选择问题。例如,当且仅当它是一个位掩码或者它表示 2 的幂或 2 的幂减 1 时,我才使用它们。一个情况可能是 whwn 想要按位 AND 提取一定数量的位。跨度>

标签: c# int hex


【解决方案1】:

在某些情况下,十六进制值比其等效十进制值更圆润且更易于理解。比如0x0FFF、0xA0A0​​、0x10000等

【讨论】:

  • 有趣的谢谢,你有例子说明更圆润易懂的 HEX 可能更合适吗?
  • @AlexKeySmith 例如,可以使用 0x100000xFFFF 检查 64K 限制。对于 32+ 位整数,4294967295 出错的风险远高于0xFFFFFFFF
猜你喜欢
  • 2010-09-19
  • 2012-06-10
  • 1970-01-01
  • 2015-09-17
  • 2016-11-12
  • 1970-01-01
相关资源
最近更新 更多