[問題] 12 bits數值轉成16 bits 數值
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Keil uC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
NO
問題(Question):
目前的應用上有一筆12bits的資料讀出來時是這樣的(舉例)
Data_H = 10111100
Data_L = 1100XXXX
分為high 和low兩部分
我希望把它變為
DataNew_H = 11111011
DataNew_L = 11001100
這樣,也就是正常的16bits表示
餵入的資料(Input):
Data_H = 10111100
Data_L = 1100XXXX
預期的正確結果(Expected Output):
DataNew_H = 11111011
DataNew_L = 11001100
錯誤結果(Wrong Output):
現在跑出來是對的,程式碼如下
只是覺得有點冗長,不知道是否有更好的寫法?
程式碼(Code):(請善用置底文網頁, 記得排版)
if(Data_H >> 7)
temp = ((Data_H << 4) | (Data_L >> 4)) | 0xF000;
else
temp = ((Data_H << 4) | (Data_L >> 4));
DataNew_H = temp >> 8;
DataNew_L = temp & 0x00FF;
補充說明(Supplement):
目前問題如上所述,小弟寫程式還不到一年
還請各位高手提點一下,感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.66.186
※ 編輯: brettchen 來自: 140.115.66.186 (04/05 00:37)
→
04/06 18:16, , 1F
04/06 18:16, 1F
→
04/07 02:12, , 2F
04/07 02:12, 2F
→
04/07 02:17, , 3F
04/07 02:17, 3F
→
04/07 02:17, , 4F
04/07 02:17, 4F
→
04/07 02:31, , 5F
04/07 02:31, 5F
→
04/07 03:27, , 6F
04/07 03:27, 6F