2013-11-01 125 views
1

我从PCD DATA FORMAT中提取的以下浮点数8.8489784e-39代表点云的一个点的RGB值。将浮点数转换为RGB或HEX

我必须将其直接转换为HEX,或转换为Int-> RGB或无论哪种方式。我搜索了网页,但无法将任何东西放在一起,因为我在JavaScript中使用浮点运算的经验相当有限。

+0

应该使用什么算法进行转换? RGB值通常为0-255(十进制)或0-FF(十六进制),上面的值基本为零。如果是米,则比电子直径(〜1.0e-15 m)小数万亿倍。 – RobG

+0

我不确定,我只有我的链接中的信息。检查链接,他们提供了一个例子。我甚至不知道如何解释这些数据。 – MJB

+0

就像@RobG说的那样,他们提供的价值非常奇怪。如果你阅读了你链接到的网站,那么浮动值就是rgb的值,但这根本没有任何意义。 –

回答

0

所以我猜这是每个红色,绿色和蓝色的一个字节,存储在一个4字节的字的前三个字节,然后莫名其妙地解释为一个float而不是int。

如果是这样的话,那么8.8489784e-39F表示RGB三元组(90,91,96)中的网六角[十进制]或#5a5b60

但是在中做这个转换Javascript并不容易。您可以查看定义为here的转换函数decodeFloat,或者您可以从对this question的回答开始。

+0

看来,这些值被存储为一个打包的浮点数,然后转换为ASCII,这会显着改变该值。所以,即使你的转换是正确的(很可能),价值已经不可挽回地消失了。 :-(顺便说一下,是那个尾部的“f”是一个错字吗? – RobG

+0

我从C程序中复制并粘贴了我用来解码float的常量,这是-f的来源。通常,C中的浮点文字生成双精度值,但尾随-f使它们只有单精度。 –