亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? segyread.c

?? 這是一個讀SEGY文件的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	itr = 0;	while (itr < trmax) {		int nread;		if (buff) {			if (-1 == 			   (nread = (int) read(tapefd, (char *) &tapetr, nsegy))){				if (verbose)				      warn("tape read error on trace %d", itr);				if (++errcount > errmax)				      err("exceeded maximum io errors");			} else { /* Reset counter on successful tape IO */				errcount = 0;			}		} else {			nread = (int) fread((char *) &tapetr, 1, nsegy, tapefp);			if (ferror(tapefp)) {				if (verbose)				      warn("tape read error on trace %d", itr);				if (++errcount > errmax)				      err("exceeded maximum io errors");				clearerr(tapefp);			} else { /* Reset counter on successful tape IO */				errcount = 0;			}		}				if (!nread) break; /* middle exit loop instead of mile-long while */			/* Convert from bytes to ints/shorts */		tapesegy_to_segy(&tapetr, &tr);			/* If little endian machine, then swap bytes in trace header */		if (endian==0)			for (i = 0; i < SEGY_NKEYS; ++i) swaphval(&tr,i);			/* Check tr.ns field */		if (!nsflag && ns != tr.ns) {			warn("discrepant tr.ns = %d with tape/user ns = %d\n"				"\t... first noted on trace %d",				tr.ns, ns, itr + 1);			nsflag = cwp_true;		}		/* loop over key fields and remap */		for (ikey=0; ikey<nkeys; ++ikey) {						/* get header values */						ugethval(type1[ikey], &val1, 				 type2[ikey], ubyte[ikey]-1, 				 (char*) &tapetr, endian, conv);			puthval(&tr, index1[ikey], &val1);		}		/* Convert and write desired traces */		if (++itr >= trmin) {			/* Convert IBM floats to native floats */			  if (conv) {				switch (bh.format) {				case 1:			  /* Convert IBM floats to native floats */					ibm_to_float((int *) tr.data,						(int *) tr.data, ns, endian);					break;				case 2:			  /* Convert 4 byte integers to native floats */					long_to_float((long *) tr.data,						(float *) tr.data, ns, endian);					break;				case 3:			  /* Convert 2 byte integers to native floats */					short_to_float((short *) tr.data,						(float *) tr.data, ns, endian);					break;				case 5:			  /* IEEE floats.  Byte swap if necessary. */                                        if (endian==0)                                           for (i = 0; i < ns ; ++i)                                                swap_float_4(&tr.data[i]);					break;				case 8:			  /* Convert 1 byte integers to native floats */					integer1_to_float((signed char *)tr.data,					(float *) tr.data, ns);                                        break;				}				/* Apply trace weighting. */				if (trcwt && tr.trwf!=0) {			  		float scale = pow(2.0,-tr.trwf);				  	int i;				  	for (i=0; i<ns; ++i) {				    		tr.data[i] *= scale;				  	}				}			} else if (conv==0) {				/* don't convert, if not appropriate */                                switch (bh.format) {                                case 1: /* endian=0 byte swapping */				case 5:                                        if (endian==0)                                           for (i = 0; i < ns ; ++i)                                                swap_float_4(&tr.data[i]);                                        break;                                case 2: /* convert longs to floats */                                        /* SU has no provision for reading */                                        /* data as longs */                                        long_to_float((long *) tr.data,                                                (float *) tr.data, ns, endian);                                        break;                                case 3: /* shorts are the SHORTPAC format */					/* used by supack2 and suunpack2 */                                        if (endian==0)/* endian=0 byte swap */                                           for (i = 0; i < ns ; ++i)                                                swap_short_2((short *) &tr.data[i]);                                        /* Set trace ID to SHORTPACK format */                                        tr.trid = SHORTPACK;                                        break;                                case 8: /* convert bytes to floats */                                        /* SU has no provision for reading */                                        /* data as bytes */					integer1_to_float((signed char *)tr.data,					(float *) tr.data, ns);                                        break;                                }                        }			/* Write the trace to disk */			tr.ns = ns;			puttr(&tr);			/* Echo under verbose option */			if (verbose && itr % vblock == 0)				warn(" %d traces from tape", itr);		}	}	/* Re-iterate error in case not seen during run */	if (nsflag) warn("discrepancy found in header and trace ns values\n"		"the value (%d) was used to extract traces", ns);	/* Clean up (binary & header files already closed above) */	(buff) ? eclose(tapefd):		 efclose(tapefp);	if (verbose) warn("tape closed successfully");	return(CWP_Exit());}#ifdef _HPUX_SOURCEstatic void ibm_to_float(int from[], int to[], int n, int endian){	/* HP version of ibm_to_float */    register int fconv, fmant, i, t, dummy;	dummy = endian;    for (i=0;i<n;++i) {        fconv = from[i];        /* next lines modified (M.J.Rutty 20/9/92) */        /* if (fconv) { */        /* fmant = 0x00ffffff & fconv; */        fmant = 0x00ffffff & fconv;        if (!fmant)          fconv=0;        else {          /* end modifications */            t = (int) ((0x7f000000 & fconv) >> 22) - 130;            while (!(fmant & 0x00800000)) { --t; fmant <<= 1; }            if (t > 254) fconv = (0x80000000 & fconv) | 0x7f7fffff;            else if (t <= 0) fconv = 0;            else fconv = (0x80000000 & fconv) |(t << 23)|(0x007fffff & fmant);        }        to[i] = fconv;    }    return;}#else /* use the regular ibm_to_float routine */static void ibm_to_float(int from[], int to[], int n, int endian)/***********************************************************************ibm_to_float - convert between 32 bit IBM and IEEE floating numbers************************************************************************Input::from		input vectorto		output vector, can be same as input vectorendian		byte order =0 little endian (DEC, PC's)			    =1 other systems ************************************************************************* Notes:Up to 3 bits lost on IEEE -> IBMAssumes sizeof(int) == 4IBM -> IEEE may overflow or underflow, taken care of by substituting large number or zeroOnly integer shifting and masking are used.************************************************************************* Credits: CWP: Brian Sumner,  c.1985*************************************************************************/{    register int fconv, fmant, i, t;    for (i=0;i<n;++i) {	fconv = from[i];	/* if little endian, i.e. endian=0 do this */	if (endian==0) fconv = (fconv<<24) | ((fconv>>24)&0xff) |		((fconv&0xff00)<<8) | ((fconv&0xff0000)>>8);	if (fconv) {	    fmant = 0x00ffffff & fconv;	    /* The next two lines were added by Toralf Foerster */	    /* to trap non-IBM format data i.e. conv=0 data  */	    if (fmant == 0)		warn("mantissa is zero data may not be in IBM FLOAT Format !");		    t = (int) ((0x7f000000 & fconv) >> 22) - 130;	    while (!(fmant & 0x00800000)) { --t; fmant <<= 1; }	    if (t > 254) fconv = (0x80000000 & fconv) | 0x7f7fffff;	    else if (t <= 0) fconv = 0;	    else fconv = (0x80000000 & fconv) |(t << 23)|(0x007fffff & fmant);	}	to[i] = fconv;    }    return;}#endifstatic void tapebhed_to_bhed(const tapebhed *tapebhptr, bhed *bhptr)/****************************************************************************tapebhed_to_bhed -- converts the seg-y standard 2 byte and 4 byte	integer header fields to, respectively, the	machine's short and int types. *****************************************************************************Input:tapbhed		pointer to array of *****************************************************************************Notes:The present implementation assumes that these types are actually the "right"size (respectively 2 and 4 bytes), so this routine is only a placeholder forthe conversions that would be needed on a machine not using this convention.*****************************************************************************Author: CWP: Jack  K. Cohen, August 1994****************************************************************************/{	register int i;	Value val;		/* convert binary header, field by field */	for (i = 0; i < BHED_NKEYS; ++i) {		gettapebhval(tapebhptr, i, &val);		putbhval(bhptr, i, &val);	}}static void tapesegy_to_segy(const tapesegy *tapetrptr, segy *trptr)/****************************************************************************tapesegy_to_segy -- converts the seg-y standard 2 byte and 4 byte		    integer header fields to, respectively, the machine's		    short and int types. *****************************************************************************Input:tapetrptr	pointer to trace in "tapesegy" (SEG-Y on tape) formatOutput:trptr		pointer to trace in "segy" (SEG-Y as in	 SU) format*****************************************************************************Notes:Also copies float data byte by byte.  The present implementation assumes thatthe integer types are actually the "right" size (respectively 2 and 4 bytes),so this routine is only a placeholder for the conversions that would be neededon a machine not using this convention.	 The float data is preserved asfour byte fields and is later converted to internal floats by ibm_to_float(which, in turn, makes additonal assumptions).*****************************************************************************Author: CWP:Jack K. Cohen,  August 1994****************************************************************************/{	register int i;	Value val;		/* convert header trace header fields */	for (i = 0; i < SEGY_NKEYS; ++i) {		gettapehval(tapetrptr, i, &val);		puthval(trptr, i, &val);	}	/* copy the optional portion */	memcpy((char *)&(trptr->otrav)+2, tapetrptr->unass, 60);	/* copy data portion */	memcpy(trptr->data, tapetrptr->data, 4*SU_NFLTS);}static void long_to_float(long from[], float to[], int n, int endian)/****************************************************************************Author:	J.W. de Bruijn, May 1995****************************************************************************/{	register int i;  	if (endian == 0) {		for (i = 0; i < n; ++i) {			swap_long_4(&from[i]);			to[i] = (float) from[i];		}	} else {		for (i = 0; i < n; ++i) {			to[i] = (float) from[i];		}	}}static void short_to_float(short from[], float to[], int n, int endian)/****************************************************************************short_to_float - type conversion for additional SEG-Y formats*****************************************************************************Author: Delft: J.W. de Bruijn, May 1995Modified by: Baltic Sea Reasearch Institute: Toralf Foerster, March 1997 ****************************************************************************/{	register int i;  	if (endian == 0) {		for (i = n-1; i >= 0 ; --i) {			swap_short_2(&from[i]);			to[i] = (float) from[i];		}	} else { 		for (i = n-1; i >= 0 ; --i)			to[i] = (float) from[i];	}}static void integer1_to_float(signed char from[], float to[], int n)/****************************************************************************integer1_to_float - type conversion for additional SEG-Y formats*****************************************************************************Author: John Stockwell,  2005****************************************************************************/{  	while (n--) {		to[n] =  from[n];	}}void ugethval(cwp_String type1, Value *valp1, 	      char type2, int ubyte, 	      char *ptr2, int endian, int conv){	double dval1 = 0;	char   c = 0;	short  s = 0;	int    l = 0;	float  f = 0.0;	char	*ptr1;		#if 0	fprintf(stderr, "start ugethval %d %c\n", ubyte, type2);	#endif		switch (type2) {	case 'b':		ptr1 = (char*) &c;		ptr1[0] = ptr2[ubyte];		dval1 = (double) c;	break;	case 's':		ptr1 = (char*) &s;		ptr1[0] = ptr2[ubyte];		ptr1[1] = ptr2[ubyte+1];		if (endian==0)		   swap_short_2(&s);		dval1 = (double) s;	break;	case 'l':		ptr1 = (char*) &l;		ptr1[0] = ptr2[ubyte];		ptr1[1] = ptr2[ubyte+1];		ptr1[2] = ptr2[ubyte+2];		ptr1[3] = ptr2[ubyte+3];		if (endian==0)		   swap_long_4((long *)&l);		dval1 = (double) l;	break;	case 'f':		ptr1 = (char*) &f;		ptr1[0] = ptr2[ubyte];		ptr1[1] = ptr2[ubyte+1];		ptr1[2] = ptr2[ubyte+2];		ptr1[3] = ptr2[ubyte+3];		if (conv)		   ibm_to_float((int*) &f, (int*) &f, 1, endian);		else if (conv==0 && endian==0)		   swap_float_4(&f);		dval1 = (double) f;	break;	default:		err("unknown type %s", type2);	break;	}	#if 0	fprintf(stderr, "value %lf\n", dval1);	#endif			switch (*type1) {	case 's':		err("can't change char header word");	break;	case 'h':		valp1->h = (short) dval1;	break;	case 'u':		valp1->u = (unsigned short) dval1;	break;	case 'l':		valp1->l = (long) dval1;	break;	case 'v':		valp1->v = (unsigned long) dval1;	break;	case 'i':		valp1->i = (int) dval1;	break;	case 'p':		valp1->p = (unsigned int) dval1;	break;	case 'f':		valp1->f = (float) dval1;	break;	case 'd':		valp1->d = (double) dval1;	break;	default:		err("unknown type %s", type1);	break;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中字一区| 日韩三级视频中文字幕| 欧美激情综合在线| 国产精品影音先锋| 精品国产乱码久久久久久影片| 亚洲成av人影院| 欧美网站一区二区| 亚洲主播在线观看| 欧美日韩你懂的| 亚洲成人免费视| 欧美日韩国产一二三| 亚洲一区免费观看| 欧洲精品在线观看| 亚洲欧美色综合| 欧洲一区在线观看| 午夜激情一区二区三区| 欧美色成人综合| 亚洲成av人在线观看| 欧美精品色一区二区三区| 亚洲欧美国产毛片在线| 色视频一区二区| 亚洲国产精品一区二区久久| 欧美乱妇15p| 蜜桃视频一区二区三区在线观看| 日韩一级片网址| 久久精品国产77777蜜臀| 精品第一国产综合精品aⅴ| 国内精品伊人久久久久av一坑| 久久久久国产精品免费免费搜索| 成人免费毛片a| 一区二区三区中文字幕电影| 欧美日韩一区二区三区四区| 美美哒免费高清在线观看视频一区二区 | 国产一区二区在线观看免费| 国产三级三级三级精品8ⅰ区| 成人禁用看黄a在线| 亚洲久本草在线中文字幕| 欧美性受极品xxxx喷水| 琪琪久久久久日韩精品| 久久久精品国产99久久精品芒果| 成人精品免费网站| 亚洲国产你懂的| 日韩精品一区二区三区在线| 高清在线不卡av| 一区二区三区资源| 日韩你懂的在线播放| 国产成人亚洲综合a∨婷婷| 亚洲三级在线观看| 欧美一区二区三区免费| 成人动漫一区二区| 午夜欧美2019年伦理| 久久中文娱乐网| 97超碰欧美中文字幕| 午夜精品久久久久久久久久| 久久久久国产一区二区三区四区| 色综合久久中文字幕| 老司机精品视频在线| 国产精品不卡视频| 欧美日韩视频在线一区二区| 激情综合网天天干| 亚洲免费视频成人| 日韩欧美在线观看一区二区三区| 成人h动漫精品一区二区 | 国产精品乱码人人做人人爱| 欧美亚洲动漫精品| 国产麻豆精品视频| 亚洲一区国产视频| 国产欧美日韩综合| 欧美日韩和欧美的一区二区| 豆国产96在线|亚洲| 亚洲成av人在线观看| 中文字幕第一区二区| 91精品在线麻豆| av不卡免费在线观看| 免费高清视频精品| 亚洲色图欧美激情| 久久久久久久久蜜桃| 欧美三区在线观看| 成人免费毛片高清视频| 麻豆精品久久精品色综合| 亚洲精品视频在线| 欧美成人高清电影在线| 欧美主播一区二区三区| 国产激情一区二区三区| 午夜精品福利一区二区蜜股av| 国产精品污www在线观看| 日韩三级av在线播放| 91浏览器入口在线观看| 国产一区欧美二区| 三级久久三级久久久| 1000部国产精品成人观看| 精品国产一区二区三区久久久蜜月 | 天天操天天综合网| 最新久久zyz资源站| 久久尤物电影视频在线观看| 欧美精品丝袜中出| 91福利社在线观看| 成人在线一区二区三区| 国产在线播放一区三区四| 91玉足脚交白嫩脚丫在线播放| 捆绑变态av一区二区三区| 亚洲亚洲人成综合网络| 中文字幕亚洲不卡| 国产欧美日韩一区二区三区在线观看| 欧美一级片在线观看| 欧美性猛交xxxxxxxx| 色综合久久中文字幕综合网 | 国产乱国产乱300精品| 日韩高清一区二区| 亚洲一级二级在线| 亚洲婷婷国产精品电影人久久| 国产日韩在线不卡| 欧美电视剧在线观看完整版| 欧美高清视频www夜色资源网| 91黄色小视频| 欧美亚洲一区二区在线观看| 色国产精品一区在线观看| 波波电影院一区二区三区| 丰满亚洲少妇av| 成人在线视频首页| 成人手机在线视频| 丁香婷婷综合五月| 国产成人精品网址| 国产精品综合网| 国产精品白丝jk白祙喷水网站 | 麻豆国产精品777777在线| 性欧美疯狂xxxxbbbb| 亚洲一级二级三级| 亚洲狠狠爱一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲国产精品一区二区久久 | 欧美一区二视频| 欧美一区二区三区在线| 欧美日韩成人综合| 51精品秘密在线观看| 91麻豆精品91久久久久同性| 欧美一区二区精品在线| 欧美肥妇bbw| 欧美一区二区久久久| 精品少妇一区二区三区免费观看 | 欧美一区二区精品| 日韩三级在线免费观看| 精品日韩一区二区| 久久精品欧美日韩精品| 中文字幕二三区不卡| 最新热久久免费视频| 亚洲综合无码一区二区| 亚洲国产精品一区二区尤物区| 日韩专区在线视频| 六月婷婷色综合| 国产一区二区电影| www.欧美精品一二区| 色婷婷av一区二区三区gif| 欧美在线观看你懂的| 欧美高清你懂得| 久久一区二区三区国产精品| 国产精品国产精品国产专区不蜜| 亚洲色大成网站www久久九九| 亚洲444eee在线观看| 麻豆一区二区三区| 成人在线视频一区| 欧美性欧美巨大黑白大战| 日韩一区二区三免费高清| 久久无码av三级| 亚洲日韩欧美一区二区在线| 亚洲gay无套男同| 国产中文字幕精品| 99久久国产综合精品女不卡| 欧美日韩国产大片| 久久婷婷色综合| 亚洲欧美另类综合偷拍| 日韩成人av影视| 成人一区二区三区在线观看| 欧美性色aⅴ视频一区日韩精品| 日韩精品一区国产麻豆| 亚洲欧洲日产国码二区| 日本v片在线高清不卡在线观看| 国产一区 二区| 日本高清不卡在线观看| 日韩欧美一卡二卡| 国产aⅴ综合色| 色94色欧美sute亚洲线路一久| 91麻豆精品国产91久久久更新时间 | 在线一区二区三区四区五区 | 欧美一区二区高清| 中文字幕一区二区三区av| 日韩不卡一区二区| 成人国产精品免费观看视频| 欧美日本在线看| 中文字幕精品三区| 日韩成人免费看| 91麻豆福利精品推荐| 精品免费视频一区二区| 亚洲欧美另类久久久精品2019| 国内欧美视频一区二区| 欧美三级电影网站| 国产女主播一区| 奇米影视在线99精品| 91浏览器入口在线观看| 久久精品亚洲一区二区三区浴池 |