2
VB.NETでは、基礎となるビット構造を維持しながら32ビット整数を取り出し、32ビット浮動小数点型にキャストする高速な方法はありますか? BitConverterはこれを行いますが、バイト配列を使わずに直接キャストしたいと思います。整数を1つの保存ビット表現にキャストする
VB.NETでは、基礎となるビット構造を維持しながら32ビット整数を取り出し、32ビット浮動小数点型にキャストする高速な方法はありますか? BitConverterはこれを行いますが、バイト配列を使わずに直接キャストしたいと思います。整数を1つの保存ビット表現にキャストする
くそ、私はおそらくCスタイルの連合を忘れることができますか?
<Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Explicit)> _
Public Structure IntFloatUnion
<Runtime.InteropServices.FieldOffset(0)> Public i As Integer
<Runtime.InteropServices.FieldOffset(0)> Public f As Single
End Structure
Sub Main()
Dim u As IntFloatUnion
u.i = 42
Console.WriteLine(u.f)
Console.ReadLine()
End Sub
さて、どのようにhereを示したものと同様のC#でヘルパー関数を書くことについて:
public static class FancyConverter
{
public static unsafe float FloatFromBytes(int i)
{
return *((float*)(void*)(&i));
}
}
これは、別のDLLにコンパイルし、VBプロジェクトから参照することができます。
+1!それはクールでした。 – jnm2
"基本的なビット構造を保存する"とは何を意味し、なぜそれが必要ですか? – Magnus
私はボトルネックのパフォーマンスを改善するために[bit twiddling](http://graphics.stanford.edu/~seander/bithacks.html)を使用していますが、私はいくつかの機能のための最も速いビットハックを探しています。 – jnm2