使用float或double快速重写一个字节,从0x00-0x7F解释字节为正常,从0x80-0xFF解释为255-128?

时间:2016-10-25 18:17:59

标签: java byte

JavaFX的PixelWriter的ByteBuffer以这种方式解释字节。
使用if语句并在数据类型之间进行转换似乎有点长,但到目前为止,这是我最好的想法。

我目前将每个像素的颜色存储在3个字节中,使用时,输出正确的颜色。但是因为我只是在通过函数后才输出它们,所以它们可以以任何格式开始,只要将它们乘以1.0就会返回正确的颜色。
所有的浮点数都是<= 1.0,并且答案四舍五入的方式并不重要。

一些例子:
0xFF * 0.5 == 0x40
0x80 * 0.9 == 0x99

1 个答案:

答案 0 :(得分:0)

您可以从b获取所需的值:

b = (b & 0x80) != 0 ? 0xff-(b & ~0x80) : 0;

然后相乘。