Fortran Coder

查看: 11148|回复: 9
打印 上一主题 下一主题

[文件读写] Fortran 读取SEGY文件 提示(95)浮点数转换失败

[复制链接]

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
跳转到指定楼层
楼主
发表于 2021-6-16 15:19:15 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kuangshenzk 于 2021-6-16 15:53 编辑

读取IBM格式的SEGY数据时,  浮点数 提示转换失败,  使用的是Open语句中 convert ibm,1、这个有什么解决方案,修改这个错误   2、经验证,转换失败处的浮点数应该为0,属于无效值,但是因为存在这个问题所以读取整个数据时间花费太多,有没有什么方案可以提速
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
沙发
 楼主| 发表于 2021-6-16 15:30:45 | 显示全部楼层
program main
    !use IFWin
    !
    !aa=call CreateFile("cc.dat",0,0,0,0,0,0)
    integer:: aa
    integer(kind=1):: a(3600)
    integer(kind=1):: b(240)
    !character(len=5):: aa
    real::            m(16)
    !aa="11"//"bb"
    open(100,file="BCO3_3D.sgy",form="unformatted",access="stream",convert="ibm")   
    read(100)a
    !do i=1,1000,1
    !read(100)b
    !read(100,IOSTAT = aa)m
    !end do
        read(100)b
    read(100)m
   

    end program main

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
板凳
 楼主| 发表于 2021-6-16 15:32:21 | 显示全部楼层
提示的错误:
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed
forrtl: info (95): floating point conversion failed

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
地板
 楼主| 发表于 2021-6-17 10:47:21 | 显示全部楼层
fcode 发表于 2021-6-16 17:47
应该是你的sgy里有道头或卷头。你直接读了地震记录,编译器错误的把道头或卷头里的其他数据类型,当作IBM浮 ...

read(100)m报出的错误  读这个的时候 我把卷头和道头信息都读出去了

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
5#
 楼主| 发表于 2021-6-18 16:09:12 | 显示全部楼层
您好  我截取了一道数据    数据包含  3600byte 的卷头  240byte 道头  和 道采样500个数据点

Test.rar

1.55 KB, 下载次数: 2

10

帖子

3

主题

0

精华

入门

F 币
66 元
贡献
34 点
6#
 楼主| 发表于 2021-6-21 16:30:59 | 显示全部楼层
fcode 发表于 2021-6-20 23:03
你的这个文件是 IBM 浮点数大端的数据。
你的编译器没有提供直接的方法读取。convert 只有 'BIG_ENDIAN' , ...

谢谢回复,还有个疑问,我现在想通过位计算算数据,这样的浮点数读按字节读入后 是不是也要调换字节顺序,然后再用ibm公式计算浮点数值?我算了一下 我发现不调换顺序 计算结果好像是正确的,调换后不正确了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-2 09:58

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表