我在哪里可以找到浮点查找表的字节?

时间:2009-07-06 21:11:13

标签: byte lookup

我最初正在寻找将字节转换为浮点数的方法,并找到表示最快的答案是创建查找表。

所以我想知道是否有人知道我可以使用的预先存在的查找表。

2 个答案:

答案 0 :(得分:4)

通常,您将使用几行代码和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 :(得分:2)

查找表?我们不需要stinkin'查找表!

float floatVal = (float)byteVal;