我有一张捕获8位的图像。我想将8位值转换为16位。我使用了以下
short temp16 = (short)val[i] << 8 ;
其中val
是8位样本的数组。
以上陈述令人吵闹。 任何人都可以提出一种8位到16位转换的方法吗?
答案 0 :(得分:4)
val []签名还是未签名8位?把它投射到无符号(假设你有通常的惯例0 =最暗,255 =最亮)然后把它投射到签名的短(我假设你想要的,因为普通的'短'默认签名)。
答案 1 :(得分:3)
纯粹的位移不会给你纯白色。 0xff&lt;&lt; 8 == 0xff00,而不是预期的0xffff。
一个技巧是使用val [i]&lt;&lt; 8 + val [i]并记住正确的数据类型(大小,签名)。这样你得到0x00 - &gt; 0x0000和0xff - &gt;为0xFFFF。
答案 2 :(得分:0)