试图从SEGY(地震数据)读取二进制文件头。不会产生正确的整数

时间:2015-12-08 17:26:02

标签: java binary

SEGY文件格式是存储地震数据的标准格式。它有一个3600字节的标题,其中第一个3200是文本标题,其余的400字节是二进制标题。

我想从这个.sgy文件中读取整数,这些文件包含我需要的重要信息。例如,我想读取字节编号3217-3218以检索采样率,即这些特定的2个字节被分配用于采样率。

类似地,字节3221-3222读取“样本数”。我有以下代码。它没有产生正确的整数。

此程序应显示以下结果文件len为993204,采样率为2,样本为501而不是打印文件len为993204,采样率为53248和 没有样品为62720

File file = new File("C:\\mysample.sgy");
FileInputStream fileInputStream = null;
byte[] bFile = new byte[(int) file.length()];    
System.out.println("file len="+file.length());
try
{
//convert file into array of bytes
fileInputStream = new FileInputStream(file);
fileInputStream.read(bFile);
fileInputStream.close();
int sampleRate = (((bFile[3217] & 0xff )<<8)|(bFile[3218] & 0xff));          
System.out.println("Sample Rate="+sampleRate);
int noOfSamples = (((bFile[3221] & 0xff )<<8)|(bFile[3222] & 0xff));             
System.out.println("No Of Samples="+noOfSamples);
}
catch (Exception e)
{
e.printStackTrace();
}

请帮忙。我没有正确读取二进制文件吗?

0 个答案:

没有答案