,當我把下面的代碼從HexConverter - Unify Community Wiki出現FormatException使用「X」爲十六進制格式
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(字符串) - 聽起來不錯。
谷歌搜索monodevelop字符串格式十六進制或類似的搜索字符串沒有顯示關於MonoDevelop中的限制的任何有趣的事情。
那麼有什麼需要準備,初始化,...之前我可以得到一個簡單的十六進制值轉換?
[更新] 顏色是一個團結的結構:
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");
我們能看到你的顏色的聲明?還是直接形成維基? – emd
作爲一個簡單的測試,我使用了'System.Drawing.Color.White.R.ToString(「X2」)'並以String返回'FF'。所以是的,在你的例子中什麼是「顏色」? – DonBoitnott
@emd它是Unity的'Color'結構。在wiki中,他們使用不同的「Color32」。這與dtb關於'Single'類型的陳述結合在一起。謝謝:-) – Kay