Просто интересно о чем-то. При преобразовании цветов HTML (отдельные цветовые компоненты которых представлены в виде двузначных шестнадцатеричных значений) в значения с плавающей запятой между 0,0 и 1,0, чтобы мы могли использовать их с OpenGL, мне стало интересно кое-что. Мы должны разделить шестнадцатеричные значения на 255, чтобы получить их аналоги OpenGL, но мы не можем просто использовать шестнадцатеричные значения как есть, потому что это приводит к целочисленному делению.
Теперь я знаю, что все они решают эту проблему (конечно) ...
float r = 0xFD / (float)0xFF; // Works because of the cast to float
float r = 0xFD / 255.0f; // Works because of the explicit float
float d = 0xFF;
float r = 0xFD / d; // Works because 'd' is a float
... но мне было интересно, есть ли способ просто украсить шестнадцатеричное значение, чтобы оно интерпретировалось как число с плавающей точкой (как вы делаете с 'f' в 1.0f) без необходимости приведения, вычисления или промежуточных переменных.
Это, конечно, не работает ...
float r = 0xFD / 0xFF; // Integer division yields an integer, not float
float r = 0xFD / 0xFFf; // Interprets 'f' as part of the hex value
Опять же, я не пытаюсь выяснить, как достичь желаемых результатов, так как мой код работает просто отлично. Мне просто интересно, смогу ли я сделать код чище, украсив шестнадцатеричное значение чем-то похожим на то, как 'f' работает с десятичными значениями, вместо того, чтобы использовать три вышеуказанных метода, которые работают.