2012-12-13 105 views
2

我有一個字節數組(char1),我必須通過將它們轉換爲特定的數據類型。例如需要在陣列中的前兩個字節被轉換成ASCII字符,所以我只投他們使用將2字節轉換爲IDL中的一個16位整數

c = string(char1[0]) 

但對於CHAR1 [2]和CHAR1 [3]我需要一個16位無符號整數,所以如何我會去結合這兩個字節並將它們轉換爲uint?我正在尋找一個普通的答案,因爲我需要將其轉換爲從1個字節到8個字節的類型。

感謝

+0

我做多一些搜索和找到類似的問題,他們說,使用位移的答案,所以我只是嘗試'我= uint(char1 [2] + ishft(char1 [5],8))'但它不工作,我也試過翻轉char1 [2]和char1 [3] – user1026561

回答

2

uint是使用程序。嘗試:

IDL> b = bindgen(2) + 1B 
IDL> print, b 
    1 2 
IDL> ui = uint(b[0:1], 0) 
IDL> print, ui 
    513 
IDL> print, 2^9 + 2^0 
    513 
1

原因i = uint(char1[2] + ishft (char1[5], 8))不工作是可變的移位是字節溢出時移8相反轉換做換班前爲uint:

i = uint(char1[2]) + ishft(uint(char1[3]),8)