你好,我使用.net框架4.5 Visual Studio 2015,如果它很重要,我的Resharper不斷建議我從十進制數轉換爲十六進制。這是爲什麼 ?如果使用十六進制,是否有任何性能獎勵?使用十六進制而不是十進制更有效嗎?
3
A
回答
8
源語言中數字文字的格式絕對沒有性能差異,因爲轉換是由編譯器完成的。從一種表示切換到另一種表示的唯一原因是代碼的可讀性。
使用十六進制文字的兩種常見情況是表示顏色和位掩碼。由於顏色表示通常在字節邊界處分開,因此解析數字0xFF00FF
要比16711935
容易得多:十六進制格式告訴您,紅色和藍色分量已最大化,而綠色分量爲零。另一方面,十進制格式要求您執行轉換。
位掩碼是相似的:當您使用十六進制或八進制表示法時,很容易看到哪些位是1,哪些位是零。您需要學習的只是一個由16位數字組成的簡短表格,其格式爲0
到F
。您可以立即知道0xFF00
的高8位設置爲1
,低8位設置爲0
。與65280
一樣,對於大多數程序員來說要困難得多。
4
在代碼中使用十進制和十六進制編寫常量時,絕對沒有性能差異。兩者將被翻譯成完全相同的IL,並最終被打到相同的機器碼。
使用哪種表示方式對您正在進行的工作更有意義,在代碼解決的問題的上下文中更清晰易懂。
相關問題
- 1. 使用十進制或十六進制
- 2. cout打印十六進制而不是十進制
- 3. 將十進制轉換爲十六進制和十六進制
- 4. 十六進制
- 5. 十六進制
- 6. C#:ASCII到十六進制:輸出十六進制爲「01」而不是「1」
- 7. 十六進制和十進制轉換
- 8. 十六進制,八進制,二進制到十進制(C++)
- 9. Android WifiManager - 以十六進制或不以十六進制
- 10. 使用限制將十進制轉換爲十六進制
- 11. 使用十六進制值操作時不能使用十六進制功能
- 12. 輸入十六進制並用C++讀取十六進制
- 13. 十六進制值
- 14. 爲十六進制
- 15. 0x00000000十六進制?
- 16. Console.WriteLine(十六進制)
- 17. 什麼是十六進制?
- 18. (Java)將十進制/十六進制寫入文件,而不是字符串
- 19. 十六進制數字是負數嗎?
- 20. 使用PHP將十進制轉換爲十六進制
- 21. 我可以用二進制而不是十六進制嵌入數字嗎?
- 22. 轉換十六進制,十進制,八進制和ASCII?
- 23. 十進制/十六進制/二進制轉換
- 24. 十六進制爲二進制和十進制在matlab中
- 25. 十六進制表示爲char十六進制的文本
- 26. 添加十六進制值以得到十六進制結果
- 27. 將字符串轉換爲十六進制到十六進制
- 28. 轉換十六進制字符串十六進制值
- 29. 如何十六進制轉換爲十六進制
- 30. 將十六進制拆分爲2個十六進制值
我很好奇。你能告訴我們R#提出這個建議的確切代碼嗎? – juharr
@juharr可能不會提出建議;如果用戶想要,它將提供快速執行該編輯。 [很多關於R#的問題歸結爲這種差異](http://stackoverflow.com/a/10976704/71059) – AakashM