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



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

    c = string(char1[0])

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

谢谢

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

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

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

最新更新