0
float
をbyte[]
に変換する必要があります。組み込みメソッド BitConverter.GetBytes
を使用してください。私はいくつかのロジックを使用してこれを達成したい。ロジックを使用してfloatをbyte []に変換するには
ありがとうございます。
float
をbyte[]
に変換する必要があります。組み込みメソッド BitConverter.GetBytes
を使用してください。私はいくつかのロジックを使用してこれを達成したい。ロジックを使用してfloatをbyte []に変換するには
ありがとうございます。
技術的には、あなただけの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()
に電話するだけです。
このロジックを、ポインタの実装を提出しないデバイス記述言語で実装します。ポインタを避けて実装することはできませんか? –
https://referencesource.microsoft.com/#q=BitConverter.GetBytes –
'GetBytes'の何が問題なのですか?異なる出力をしたいのですか、それともそれを複製しようとしていますか? –
エンジェイアネスが小さくても大きくてもかまいませんか、それを判断する必要がありますか? – scotru