发表人:wzb 2022-05-11 10:07:24 最新回复: 2022-05-11 10:07:24
SEGY标准规定,所有的二进制值使用“Big Endian”字节排序方式记录,也称正序,即:在组成一个数字的这些字节中,最高位字节(含有符号位)记录在最靠近文件开始的位置,最低位字节记录在最靠近文件结尾的位置。字节序对于解析SEG Y数据十分重要。
计算机的基本存储单元是字节,保存一个字节内容,并且对应一个地址,存储单元的地址总是由低到高排列。对于多字节的数值,在内存中,如果先见到的是低位的字节值,则操作系统是Little Endian的,否则就是Big Endain。网络字节序也是Big Endain。
下面给出short类型的数值在内存中以Big Endain、Little Endian的表示:
如,对于short nValue = 1;//十六进制0x0001
Big Endain表示:
低地址 高地址
0 | 0 | 0 | 1 |
Little Endain表示:
1 | 0 | 0 | 0 |
低地址 高地址
由于非标准SEGY数据的存在,IECO中的SEGY数据解析并没有使用上述方式来判断字节序,而是直接判断SEGY数据中的数据格式码,如果直接取出来的值是正确的,代表不需要交换字节,否则需要交换字节。
注意:
1、通过设置环境变量SegyByteSwap设置SEGY数据是否交换字节;
2、通过设置环境变量SegyNo400Vol来输入SU数据;
3、通过设置环境变量SegyNo3200Card来输入没有c-card的SEGY数据。