8.10 -b 选项

GMT中的很多程序都需要读入表数据,表数据可以是ASCII格式、二进制格式,也可以是 netCDF格式。

ASCII格式的数据很直观,可以直接看到有多少列数据。而二进制格式的数据,GMT在读入数据时是无法知道有多少列数据,也无法知道每一列数据的格式的。因而就需要使用 -b 选项告诉GMT输入或输出数据的具体格式。

-b 的语法是:

-b[i|o][<ncols>][<type>][w][+L|+B]

-bi 表示对输入有效,-bo 表示对输出有效。其后可以跟一个或多个用逗号分隔的 <ncols><type>,表示有 <ncols> 列类型为是 <type> 的数据。其中 <type> 可以取:

  • c:即 int8_t,字符型
  • u:即 uint8_t,无符号字符型
  • h:即 int16_t,两字节有符号整型
  • H:即 uint16_t,两字节无符号整型
  • i:即 int32_t,四字节有符号整型
  • I:即 uint32_t,四字节无符号整型
  • l:即 int64_t,八字节有符号整型
  • L:即 uint64_t,八字节无符号整型
  • f:四字节单精度浮点型
  • d:八字节双精度浮点型
  • x:不代表某种数据类型,表示跳过 <ncols> 个字节

例如,要读入的二进制数据中有3列,前两列是单精度浮点型,最后一列是 int32_t 型,则在读入时可以用 -bi2f,1i

对于每一个 <ncols><type> 还可以加上 w 表示对数据强制做字节序转换。

+L+B 表示整个数据按照little-endian或big-endian字节序读入。

若未指定 <ncols> 则假定 <type> 适用于所有列,读数据时 <ncols> 的值由数据期望得到的值决定。

可以使用 -h<n> 选项跳过二进制文件的前 <n> 个字节。