2012-12-13 6 views
2

바이트 배열 (char1)을 가지고 있으며 특정 데이터 유형으로 변환해야합니다. 예를 들어 배열의 첫 번째 두 바이트 난 그냥 그들을 IDL에서 2 바이트를 하나의 16 비트 정수로 변환

c = string(char1[0]) 

를 사용하지만, char1을 위해 [2] char1을 [3] 난 그렇게 16 비트 부호없는 정수가 필요 캐스트 있도록 ASCII 문자로 변환 할 필요가 어떻게 것 그 두 바이트를 결합하여 uint로 캐스팅할까요? 1 바이트에서 8 바이트까지의 유형으로 변환해야하므로 일반적인 대답을 찾고 있습니다.

감사

+0

내가 좀 더 짓을 검색하고 비슷한 질문에 대한 답을 찾았습니다. 그래서 비트 시프트를 사용한다고 말하면서'i = 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) 
관련 문제