私は当初、バイトを浮動小数点数に変換する方法を探していましたが、ルックアップ テーブルを作成するのが最速であることを示す回答を見つけました。
だから、私が使用できる既存のルックアップテーブルを誰かが知っているかどうか疑問に思っていました.
通常、数行のコードと for ループまたは目的に合ったものを使用してルックアップ テーブルを初期化します。限られた数の可能な入力に対して多数の変換を行う場合にのみ役立ちます。
以下の例は、ルックアップ テーブルを作成して使用する基本的なテクニックを示すためのものです。より多くの計算が含まれていない限り、これを実装すると実際にパフォーマンスが低下します (以下を参照)。
float[] lookupTable = new float[256];
for (int i = 0; i < 256; i++)
{
lookupTable[i] = (float)i;
}
float convertedValue = lookupTable[byteValue];
コードは C# です。目的の C の経験はありません。C++ では、配列の宣言は少し異なりますが、お分かりいただけると思います。
上記の例では、バイトから浮動小数点数への変換のみで、計算が含まれていないため、パフォーマンスの向上はありません。浮動小数点除算が関係するケースを考えてみましょう(あなたのケースのように):
lookupTable[i] = i / 255f;
この場合、ルックアップ テーブルは、直接計算を使用するよりも高速です。数学 (三角法など) が複雑になるほど、パフォーマンスが向上します。もう 1 つの一般的な使用法は、イメージのガンマ補正 (指数関数) です。