8位到16位转换

时间:2011-06-22 04:47:15

标签: c image

我有一张捕获8位的图像。我想将8位值转换为16位。我使用了以下

short temp16 =  (short)val[i] << 8 ;

其中val是8位样本的数组。

以上陈述令人吵闹。 任何人都可以提出一种8位到16位转换的方法吗?

3 个答案:

答案 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)