【发布时间】: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 提取一定数量的位。跨度>