資源簡介
采用C++ 文件流形式讀取和寫入地震標準格式SEGY文件。

代碼片段和文件信息
/*=========================================================================
??Program:???Visualization?Toolkit
??Module:????vtkPlane.h
??Copyright?(c)?Ken?Martin?Will?Schroeder?Bill?Lorensen
??All?rights?reserved.
??See?Copyright.txt?or?http://www.kitware.com/Copyright.htm?for?details.
?????This?software?is?distributed?WITHOUT?ANY?WARRANTY;?without?even
?????the?implied?warranty?of?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR
?????PURPOSE.??See?the?above?copyright?notice?for?more?information.
=========================================================================*/
#include?“IOUtil.h“
#include?
#include?
IOUtil*?IOUtil::instance?=?NULL;
IOUtil::IOUtil()
{
????isBigEndian?=?checkIfBigEndian();
}
int?IOUtil::readShortInteger(int?pos?ifstream?&in)?{
????in.seekg(pos?ios_base::beg);
????char?buffer[2];
????in.read(buffer?sizeof(buffer));
????if?(!isBigEndian)?{
????????swap(buffer?buffer?+?1);
????}
????short?num;
????memcpy(&num?buffer?2);
????return?num;
}
void?IOUtil::writeShortInteger(short?num?int?pos?ofstream?&out)
{
????out.seekp(pos?ios_base::beg);
????char?buffer[2];
????memcpy(buffer?&num?2);
????if?(!isBigEndian)?{
????????swap(buffer?buffer?+?1);
????}
????out.write(buffer?sizeof(buffer));
}
int?IOUtil::readLongInteger(ifstream?&in?int?pos)?{
????in.seekg(pos?ios_base::beg);
????char?buffer[4];
????in.read(buffer?sizeof(buffer));
????if?(!isBigEndian)?{
????????swap(buffer?buffer?+?3);
????????swap(buffer?+?1?buffer?+?2);
????}
????int?num;
????memcpy(&num?buffer?4);
????return?num;
}
void?IOUtil::writeLongInteger(int?num?int?pos?ofstream?&out)
{
????out.seekp(pos?ios_base::beg);
????char?buffer[4];
????memcpy(buffer?&num?4);
????if?(!isBigEndian)?{
????????swap(buffer?buffer?+?3);
????????swap(buffer?+?1?buffer?+?2);
????}
????out.write(buffer?sizeof(buffer));
}
float?IOUtil::readFloat(ifstream?&in)?{
????char?buffer[4];
????in.read(buffer?sizeof(buffer));
????if?(!isBigEndian)?{
????????swap(buffer?buffer?+?3);
????????swap(buffer?+?1?buffer?+?2);
????}
????float?num;
????memcpy(&num?buffer?4);
????return?num;
}
void?IOUtil::writeFloat(float?num?ofstream?&out)
{
????char?buffer[4];
????memcpy(buffer?&num??4);
????if?(!isBigEndian)?{
????????swap(buffer?buffer?+?3);
????????swap(buffer?+?1?buffer?+?2);
????}
????out.write(buffer?sizeof(buffer));
}
char?IOUtil::readChar(ifstream?&in)?{
????char?buffer;
????in.read(&buffer?sizeof(buffer));
????return?buffer;
}
void?IOUtil::writeChar(char?c?ofstream?&out)
{
????out.write(&csizeof(c));
}
void?IOUtil::swap(char?*a?char?*b)?{
????char?temp?=?*a;
????*a?=?*b;
????*b?=?temp;
}
int?IOUtil::getFileSize(ifstream?&in)?{
????in.seekg(0?ios_base::end);
????return?in.tellg();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-09-20?15:55??data\
?????文件??????255018??2016-11-17?23:45??data\Events.rdv
?????文件?????1658760??2016-11-17?23:45??data\lineA.sgy
?????文件??????665664??2016-11-17?23:45??data\lineB.sgy
?????文件??????640200??2016-11-17?23:45??data\lineC.sgy
?????文件??????882108??2016-11-17?23:45??data\lineD.sgy
?????文件??????474684??2016-11-17?23:45??data\lineE.sgy
?????文件?????6508764??2016-11-17?23:45??data\waha8.sgy
?????文件????????2770??2018-09-20?15:41??IOUtil.cpp
?????文件????????1537??2018-09-20?15:41??IOUtil.h
?????文件?????????117??2018-09-20?14:25??main.cpp
?????文件?????????405??2018-09-20?22:18??SegY.pro
?????文件???????14390??2018-09-21?20:12??SegY.pro.user
?????文件????????2853??2018-09-21?12:49??SegYBytesPositions.h
?????文件???????18060??2018-09-21?20:03??SegYCommon.h
?????文件????????6516??2018-09-20?19:55??SegYIOUtils.cpp
?????文件????????1923??2018-09-20?19:54??SegYIOUtils.h
?????文件????????3943??2018-09-21?13:10??SegYReader.cpp
?????文件????????1429??2018-09-21?13:10??SegYReader.h
?????文件????????6122??2018-09-21?13:10??SegYTraceReader.cpp
?????文件????????1393??2018-09-21?13:10??SegYTraceReader.h
?????文件????????3113??2018-09-21?19:47??SegYTraceWriter.cpp
?????文件????????1342??2018-09-21?19:29??SegYTraceWriter.h
?????文件????????4237??2018-09-21?20:11??SegYWriter.cpp
?????文件????????1650??2018-09-21?19:49??SegYWriter.h
?????文件?????????599??2016-11-17?23:45??Trace.cpp
?????文件?????????865??2016-11-17?23:45??Trace.h
評論
共有 條評論