2016-10-21 14 views
0

floatbyte[]に変換する必要があります。組み込みメソッド BitConverter.GetBytesを使用してください。私はいくつかのロジックを使用してこれを達成したい。ロジックを使用してfloatをbyte []に​​変換するには

ありがとうございます。

+1

https://referencesource.microsoft.com/#q=BitConverter.GetBytes –

+0

'GetBytes'の何が問題なのですか?異なる出力をしたいのですか、それともそれを複製しようとしていますか? –

+0

エンジェイアネスが小さくても大きくてもかまいませんか、それを判断する必要がありますか? – scotru

答えて

2

技術的には、あなただけのbyte*ポインタを経由してbyte Sをスキャンするためにunsafeを試すことができます。

public static byte[] GetFloatBytes(float value) { 
    byte[] result = new byte[sizeof(float)]; 

    unsafe { 
    // Let's treat a float as an array of bytes 
    byte* b = (byte*) &value; 

    for (int i = 0; i < result.Length; ++i, ++b) 
     result[i] = *b; 
    } 

    return result; 
} 

テスト:

float x = (float) Math.PI; 

// db 0f 49 40 
Console.WriteLine(string.Join(" ", BitConverter.GetBytes(x).Select(b => b.ToString("x2")))); 
// db 0f 49 40 
Console.WriteLine(string.Join(" ", GetFloatBytes(x).Select(b => b.ToString("x2")))); 

しかし、より良い練習がポインタBitConverterに残すことですBitConverter.GetBytes()に電話するだけです。

+0

このロジックを、ポインタの実装を提出しないデバイス記述言語で実装します。ポインタを避けて実装することはできませんか? –

関連する問題