使用十六进制而不是十进制更有效吗?
问题描述:
你好,我使用.net框架4.5 Visual Studio 2015,如果它很重要,我的Resharper不断建议我从十进制数转换为十六进制。这是为什么 ?如果使用十六进制,是否有任何性能奖励?使用十六进制而不是十进制更有效吗?
答
源语言中数字文字的格式绝对没有性能差异,因为转换是由编译器完成的。从一种表示切换到另一种表示的唯一原因是代码的可读性。
使用十六进制文字的两种常见情况是表示颜色和位掩码。由于颜色表示通常在字节边界处分开,因此解析数字0xFF00FF
要比16711935
容易得多:十六进制格式告诉您,红色和蓝色分量已最大化,而绿色分量为零。另一方面,十进制格式要求您执行转换。
位掩码是相似的:当您使用十六进制或八进制表示法时,很容易看到哪些位是1,哪些位是零。您需要学习的只是一个由16位数字组成的简短表格,其格式为0
到F
。您可以立即知道0xFF00
的高8位设置为1
,低8位设置为0
。与65280
一样,对于大多数程序员来说要困难得多。
答
在代码中使用十进制和十六进制编写常量时,绝对没有性能差异。两者将被翻译成完全相同的IL,并最终被打到相同的机器码。
使用哪种表示方式对您正在进行的工作更有意义,在代码解决的问题的上下文中更清晰易懂。
我很好奇。你能告诉我们R#提出这个建议的确切代码吗? – juharr
@juharr可能不会提出建议;如果用户想要,它将提供快速执行该编辑。 [很多关于R#的问题归结为这种差异](http://stackoverflow.com/a/10976704/71059) – AakashM