相关疑难解决方法(0)

从signed char转换为unsigned char并再次返回?

我正在使用JNI并且有一个jbyte类型的数组,其中jbyte表示为有符号字符,即-128到127.jbytes表示图像像素.对于图像处理,我们通常希望像素分量的范围为0到255.因此我想将jbyte值转换为0到255的范围(即与unsigned char相同的范围),对值进行一些计算然后存储结果再次作为jbyte.

如何安全地进行这些转换?

我设法让这段代码工作,其中一个像素值增加30但是被限制为255,但我不明白它是安全的还是可移植的:

 #define CLAMP255(v) (v > 255 ? 255 : (v < 0 ? 0 : v))

 jbyte pixel = ...
 pixel = CLAMP_255((unsigned char)pixel + 30);
Run Code Online (Sandbox Code Playgroud)

我很想知道如何在C和C++中做到这一点.

c c++ java-native-interface

59
推荐指数
1
解决办法
9万
查看次数

标签 统计

c ×1

c++ ×1

java-native-interface ×1