[英]8bit to 16bit conversion
我有一個捕獲8位的圖像。 我想將8位值轉換為16位。 我使用了以下內容
short temp16 = (short)val[i] << 8 ;
其中val
是8位樣本的數組。
以上陳述令人吵鬧。 任何人都可以建議一種8位到16位轉換的方法嗎?
val []是簽名還是未簽名8位? 把它投射到無符號(假設你有通常的慣例0 =最暗,255 =最亮)然后把它投射到簽名的短(我假設你想要的,因為普通的'短'是默認簽名)。
純粹的位移不會給你純白色。 0xff << 8 == 0xff00,而不是預期的0xffff。
一個技巧是使用val [i] << 8 + val [i]並記住正確的數據類型(大小,符號)。 這樣你得到0x00 - > 0x0000和0xff - > 0xffff。
這里給出了一個很好的例子: 將兩個uint8_t單詞轉換為uint16_t和uint16_t中的一個單詞轉換為兩個uint8_t 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.