2016-03-04 146 views
3

你好,我使用.net框架4.5 Visual Studio 2015,如果它很重要,我的Resharper不断建议我从十进制数转换为十六进制。这是为什么 ?如果使用十六进制,是否有任何性能奖励?使用十六进制而不是十进制更有效吗?

+1

我很好奇。你能告诉我们R#提出这个建议的确切代码吗? – juharr

+0

@juharr可能不会提出建议;如果用户想要,它将提供快速执行该编辑。 [很多关于R#的问题归结为这种差异](http://stackoverflow.com/a/10976704/71059) – AakashM

回答

8

源语言中数字文字的格式绝对没有性能差异,因为转换是由编译器完成的。从一种表示切换到另一种表示的唯一原因是代码的可读性。

使用十六进制文字的两种常见情况是表示颜色和位掩码。由于颜色表示通常在字节边界处分开,因此解析数字0xFF00FF要比16711935容易得多:十六进制格式告诉您,红色和蓝色分量已最大化,而绿色分量为零。另一方面,十进制格式要求您执行转换。

位掩码是相似的:当您使用十六进制或八进制表示法时,很容易看到哪些位是1,哪些位是零。您需要学习的只是一个由16位数字组成的简短表格,其格式为0F。您可以立即知道0xFF00的高8位设置为1,低8位设置为0。与65280一样,对于大多数程序员来说要困难得多。

4

在代码中使用十进制和十六进制编写常量时,绝对没有性能差异。两者将被翻译成完全相同的IL,并最终被打到相同的机器码。

使用哪种表示方式对您正在进行的工作更有意义,在代码解决的问题的上下文中更清晰易懂。