iPhone Cocos2D-将浮点转换为字节

iPhone Cocos2D-将浮点转换为字节,iphone,ios,opengl-es,cocos2d-iphone,Iphone,Ios,Opengl Es,Cocos2d Iphone,我有一个UISlider,它给我一个介于0和255之间的浮点值,我需要设置Cocos2D的不透明度,它的单位是Glubyte 如何将浮点转换为字节 谢谢静态播放(floatNumber*255.f); 我没有注意到UISlider的范围已经在0-255之间。。所以去掉上面的乘法 static_cast<GLubyte>(floatNumber); static_cast(浮点数); 静态强制转换(floatNumber*255.f); 我没有注意到UISlider的范围已经在

我有一个UISlider,它给我一个介于0和255之间的浮点值,我需要设置Cocos2D的不透明度,它的单位是Glubyte

如何将浮点转换为字节

谢谢

静态播放(floatNumber*255.f);
我没有注意到UISlider的范围已经在0-255之间。。所以去掉上面的乘法

static_cast<GLubyte>(floatNumber); 
static_cast(浮点数);
静态强制转换(floatNumber*255.f);
我没有注意到UISlider的范围已经在0-255之间。。所以去掉上面的乘法

static_cast<GLubyte>(floatNumber); 
static_cast(浮点数);

A
GLubyte
的定义如下:

typedef unsigned char  GLubyte;
因此,转换实际上没有问题(请看一下,它在“basic”
(int)(x+0.5)
)后面提供了一些可能的方法),除了“超出范围”的值(因为无符号字符可以表示0到255之间的十进制数)。简而言之,您应该决定如何处理不能表示为无符号整数的浮点值


既然你说你的滑块给你的值在0到255之间,那么你应该没有问题。

A
GLubyte
的定义如下:

typedef unsigned char  GLubyte;
因此,转换实际上没有问题(请看一下,它在“basic”
(int)(x+0.5)
)后面提供了一些可能的方法),除了“超出范围”的值(因为无符号字符可以表示0到255之间的十进制数)。简而言之,您应该决定如何处理不能表示为无符号整数的浮点值


既然您说您的滑块提供的值介于0和255之间,那么您应该没有问题。

如果您的滑块已配置为0-255范围,那么您不必缩放该值,只需转换类型即可。像这样的方法应该会奏效:

GLubyte component = (GLubyte)lroundf(slider.value);

如果滑块已配置为0-255范围,则不必缩放值,只需转换类型即可。像这样的方法应该会奏效:

GLubyte component = (GLubyte)lroundf(slider.value);