两种数据形式

SAC 文件格式有两种形式:二进制型和文本型1。文本型与二进制型是完全等价的,只是文本型是给人看的,二进制型是给机器读写的。从 C 程序的角度来看,两者的区别在于,写文件时前者使用 fprintf 后者使用 fwrite

二进制型的 SAC 数据,占用更小的磁盘空间,读写速度更快,因而是最常用的 SAC 格式形式。当文件出现问题时,文本型数据便于查看文件内容。

通常,文本型的SAC文件以 ASC2结尾, 二进制型的 SAC 文件以后缀 SAC 结尾。但是,SAC 在读取文件时是不判断文件后缀的,所以文件后缀是什么并不重要,在某些情况下,会以 BHEBHNBHZ 这样的后缀结尾。在下面的示例中,很多 SAC 文件甚至没有后缀。

两种形式的互相转换

你是否想要一个文本型的 SAC 文件,用编辑器打开好好看看 SAC 数据究竟长什么样?SAC 自带的命令可以实现两种形式的转换3

SAC> fg seis
SAC> w seis             # 先生成一个二进制型 SAC 数据,以做测试

将二进制型转换成文本型:

SAC> r seis             # 读二进制型文件
SAC> w alpha seis.asc   # 以文本型写入

将文本型转换成二进制型:

SAC> r alpha seis.asc     # 读文本型文件
SAC> w sac seis.sac       # 以二进制型写入,可以省略sac,写成w seis.sac

试试用你最喜欢的文本编辑器打开文本型的 seis.asc 吧,其内容如下:

0.01000000      -1.569280       1.520640      -12345.00      -12345.00
  9.459999       19.45000      -41.43000       10.46400      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
 -12345.00       48.00000      -120.0000      -12345.00      -12345.00
  48.00000      -125.0000      -12345.00       15.00000      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
  373.0627       88.14721       271.8528       3.357465      -12345.00
 -12345.00    -0.09854718       0.000000       0.000000      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
 -12345.00      -12345.00      -12345.00      -12345.00      -12345.00
      1981        88        10        38        14
         0         6         0         0      1000
    -12345    -12345    -12345    -12345    -12345
         1        50         9    -12345    -12345
    -12345    -12345        42    -12345    -12345
    -12345    -12345    -12345    -12345    -12345
    -12345    -12345    -12345    -12345    -12345
         1         1         1         1         0
 CDV      K8108838
 -12345  -12345  -12345
 -12345  -12345  -12345
 -12345  -12345  -12345
 -12345  -12345  -12345
 -12345  -12345  -12345
 -12345  -12345  -12345
 -12345  -12345  -12345
 -0.09728001    -0.09728001    -0.09856002    -0.09856002    -0.09728001
 -0.09600000    -0.09472002    -0.09344001    -0.09344001    -0.09344001
 -0.09344001    -0.09344001    -0.09472002    -0.09472002    -0.09344001
 ......

第1–30行是头段区,31之后的行是数据区。目前你可能还看不懂头段区的这些数字或者字符代表什么。没关系,在下一节会详细介绍 SAC 头段区,记得一定要一边看下一节的内容,一边对照着这个例子,好好琢磨每一个头段的含义。

1

原为 alphanumeric,译为文数字。

2

ASCII 的简写。

3

也可以使用 SAC 的 convert 命令进行转换,不过此命令即将被淘汰,因而这里不会介绍。