2013-06-05 8 views
10

をフォーマット進するための「X」を使用して、私はこれは私に例外を与えるHexConverter - Unify Community WikiFormatException

string hex = color.r.ToString("X2") + color.g.ToString("X2") + color.b.ToString("X2"); 

から次のコードを取りましたエラー。浮動小数点数の書式設定のために働いているのは"Fです。

宣言に移動は、アセンブリブラウザでmscorlib.dll/System/Single.ToString(string)を表示します。

グーグルモノデベロッパーの文字列形式の16進数または同様の検索文字列は、MonoDevelopの制限に関して興味深いものを表示しませんでした。

私は簡単な16進数の変換を得る前に、何かを準備し、初期化しますか?

[更新] 色はユニティでの構造体である:だから私はColorはそのを定義しているという事実を逃した

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); 

public struct Color 
{ 
    public float r; 
    public float g; 
    public float b; 
    // ... 

は私が最終的に使用して作業それを得たDTBの答えを撮影コンポーネントはintの代わりにfloatとなり、整数型のdtbが言及しています。

[更新-2] よりエレガントな解決策:MSDNから

Color32 color32 = color; 
string hex = color32.r.ToString ("X2") + color32.g.ToString ("X2") + color32.b.ToString ("X2"); 
+1

見ることができますか?それともwikiを直接作りますか? – emd

+0

シンプルなテストとして、私は 'System.Drawing.Color.White.R.ToString(" X2 ")'を使い、Stringとして 'FF'を返しました。だから、あなたの例では「色」は何ですか? – DonBoitnott

+0

@emd Unityの 'Color'構造体です。 wikiでは 'Color32'を使います。これはdtbの「Single」型に関する記述との組み合わせのポイントでした。ありがとう:-) – Kay

答えて

11

進数( "X")形式指定子は16進数の文字列に番号を変換します。書式指定子の大文字小文字は、9より大きい16進数に使用するかどうかを示します。たとえば、 "ABCDEF"を生成するには "X"、 "abcdef"を生成するには "x"を使用します。 この形式は、整数型に対してのみサポートされています。

Single浮動小数点型ではなく、整数型です。

使用Int32:私たちは色のあなたの宣言は

int value = 10; 
string result = value.ToString("X2"); 
// result == "0A" 
+0

多くのありがとう。 intを使うと期待どおりに動作します。私の更新された質問を見てください。 – Kay

関連する問題