在IDL中将2个字节转换为一个16位整数

时间:2012-12-13 19:12:17

标签: casting byte 16-bit idl-programming-language

我有一个字节数组(char1),我必须将它们转换为特定的数据类型。例如,数组中的前两个字节需要转换为ascii字符,因此我只使用

进行转换
    c = string(char1[0])

但是对于char1 [2]和char1 [3]我需要一个16位无符号整数,那么如何组合这两个字节并将它们作为uint转换呢?我正在寻找一般答案,因为我需要转换为1字节到8字节的类型。

由于

2 个答案:

答案 0 :(得分: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 :(得分:1)

i = uint(char1[2] + ishft (char1[5], 8))不起作用的原因是被移位的变量是字节,当移位8时它会溢出。而是在进行移位之前转换为uint:

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