Я взял следующий код из HexConverter - Unify Community Wiki
string hex = color.r.ToString("X2") + color.g.ToString("X2") + color.b.ToString("X2");
Это дает мне исключение:
FormatException: The specified format 'X2' is invalid
Я попытался использовать "D"
, но даже это заставило ошибку. Единственное, что работает, - это "F
для форматирования чисел с плавающей запятой.
Перейти к объявлению показывает mscorlib.dll/System/Single.ToString(строка) в браузере сборок - пока звучит неплохо.
Googling для monodevelop string format hex или похожих строк поиска не показал ничего интересного в отношении ограничений в MonoDevelop.
Итак, есть что подготовить, инициализировать... прежде чем я получу простое шестнадцатеричное преобразование?
[Обновление] Цвет - это структура в Unity:
public struct Color
{
public float r;
public float g;
public float b;
// ...
Взяв ответ dtb, я, наконец, получил его, используя:
int r = (int)(color.r * 256);
int g = (int)(color.g * 256);
int b = (int)(color.b * 256);
string hex = string.Format ("{0:X2}{1:X2}{2:X2}", r, g, b);
Таким образом, я упустил тот факт, что Color
определяет его компоненты как float
вместо int
, и упомянула вещь типа dtb интегральных типов.
[Обновление-2] Более элегантное решение:
Color32 color32 = color;
string hex = color32.r.ToString ("X2") + color32.g.ToString ("X2") + color32.b.ToString ("X2");