2016-03-04 149 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,並最終被打到相同的機器碼。

使用哪種表示方式對您正在進行的工作更有意義,在代碼解決的問題的上下文中更清晰易懂。