我有一张捕捉到8位的图像。我想将这些8位值转换为16位。我使用了以下代码:
short temp16 = (short)val[i] << 8 ;
其中val
是一个8位样本的数组。
上述声明有噪音。是否有人可以建议一种8位到16位转换的方法?
我有一张捕捉到8位的图像。我想将这些8位值转换为16位。我使用了以下代码:
short temp16 = (short)val[i] << 8 ;
其中val
是一个8位样本的数组。
上述声明有噪音。是否有人可以建议一种8位到16位转换的方法?
纯比特移位不能给你纯白色。0xff << 8 == 0xff00,而不是预期的0xffff。
一个技巧是使用 val[i] << 8 + val[i],并记住正确的数据类型(大小,有符号性)。这样你就可以得到0x00 -> 0x0000和0xff -> 0xffff。
val[]是有符号还是无符号8位?将其转换为无符号(假设您采用了通常的约定,0=最暗,255=最亮),然后将其转换为有符号短整型(我假设这是您想要的,因为普通的“short”默认为有符号)。