目录
1. 变量命名规则
2. 数据类型
3. 基本操作
3.1 数据类型选择
3.2 改变数据类型
3.3 科学计数法
与其他编程语言一样,IDL也有自己的变量命名规则:
IDL保留字:And、Begin、Case、Common、Do、Else、End、Endcase、Endelse、Endfor、EndIF、……(注:不用记)
注:IDL除此之外,还有一些事系统变量,其以!开头,例如:
IDL数据类型有17种,包含11种数字数据类型和6中非数字数据类型
类型 | 数据类型 | 描述 | 字节数 | 范围 |
数 字 数 据 类 型 |
Byte | 字节形 | 1 | 0 ~ 255 |
int | 整型 | 2 | (-2^16/2)-32768 ~ 32767(2^16/2-1) | |
uint | 无符号整型 | 2 | 0 ~ 65535(2^16-1) | |
long | 长整型 | 4 | -2^32/2 ~ 2^32/2-1 | |
ulong | 无符号长整型 | 4 | 0 ~ 2^32-1 | |
long64 | 64位long | 8 | -2^64/2 ~ 2^64/2-1 | |
ulong64 | 64位ulong | 8 | 0 ~ 2^64-1 | |
float | 浮点型 | 4 | -10^(-38) ~ 10^(38) | |
double | 双精度float | 8 | -10^(-308) ~ 10^(308) | |
complex | 复数 | 8 | -10^(-38) ~ 10^(38) | |
dcomplex | 双精度complex | 16 | -10^(-308) ~ 10^(308) | |
类型 | 数据类型 | 描述 | 无 | |
非 数 字 数 据 类 型 |
string |
字符串 | ||
struct | 结构体 | |||
pointer | 指针 | |||
object | 对象 | |||
list | 链表 | |||
hash | 哈希表 |
与matlab一样,IDL不需要声明变量类型,自动默认最小的数据存储方式(byte除外),例如,
>>a = 1
>>help,a
A INT = 1
此时,程序默认用最小空间存储方式,选择数据类型 int
>>a = 1.
>>help,a
A FLOAT = 1.00000
此时,由于数字后面有小数点,则默认为是有小数的数据,程序默认用最小空间存储方式,选择数据类型float
>>a = 65536
>>help,a
A LONG = 65536
此时,65536值超过int存储的空间,所以选择能存储这个数的最小空间存储方式,选择数据类型long
>>c
( 1.0000000, 2.0000000)
>>help,c
C COMPLEX = ( 1.00000, 2.00000)
此时,c为复数,则默认其数据类型为complex
IDL 数据类型对应的定义或转化方式如下表所示,
数据类型 | 定义或转化方式 |
Byte | 0B or byte() |
int | 0 or fix() |
uint | 0u or uint() |
long | 0l or long() |
ulong | 0ul or ulong() |
long64 | 0ll or long64() |
ulong64 | 0ull or ulong64() |
float | 0.0 or float() |
double | 0.0d or double() |
complex | complex(0,0) or complex(0.0,0.0) |
dcomplex | complex(0.0d,0.0d) |
string | '' or "" or string() |
pointer | ptr_new() or none() |
object | obj_new() or none() |
注:fix是截断取整函数。
例如:定义、转化为byte
>>a = 1
>>help,a
A INT = 1
>>a = 1B
>>help,a
A BYTE = 1
>>b = Byte(1)
>>help,b
B BYTE = 1
例如:定义、转为为float
>>a = 1.
>>help,a
A FLOAT = 1.00000
>>b = Float(1)
>>help,b
B FLOAT = 1.00000
例如:定义、转化字符串
>>a = 'hulizhen'
>>help,a
A STRING = 'hulizhen'
>>b = "联合遥感接收站"
>>help,b
B STRING = '联合遥感接收站'
>>c = string(1234)
>>help,c
C STRING = ' 1234'
注意:为什么数字转化为字符前面有空白,因为数据有默认的类型,即默认的长度,同时默认的是右对齐,所以才会这样显示,记住,那仅仅是显示,不是空格。
IDL科学计数法与matlab一样
>>a = 1e-5
>>help,a
A FLOAT = 1.00000e-005
>>b = 1e5
>>
>>help,b
B FLOAT = 100000.