Fortran的REAl类型用二进制写入文件,结果与C的二进制写不一样?

发布于 2022-09-05 23:10:58 字数 258 浏览 15 评论 0

我需要让fortran与c两种代码异步共享一些数据,于是让fortran用二进制流(stream)写入一些real类型并输出到屏幕上。在用C代码fread的时候(rb),得到的float和fortran中的输出在屏幕上的不一样。

后来我又实验了,用fortran写入某real并打印在屏幕,然后直接调用C,将该real传入。在C中将其也写入另一个二进制文件。最后用HEX格式发现两个文件的数据竟然不一样。

查了一下资料,两个不是都是IEEE存储浮点数据吗?为什么会这样?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一瞬间的火花 2022-09-12 23:10:58

C代码

#include<stdio.h> 
int main(){
    FILE *fid;
    float a;
    a = 10.0;
    fid = fopen( "c.bin", "wb" );
    fwrite(&a,sizeof(float),1,fid);
    fclose(fid);
    return 0;
}

Fortran代码

program main 
    real :: a 
    a = 10.0 
    open(10,file="for.bin",access='stream')
    write(10)a
    close(10)
end program main 

运行结果
运行结果

结果没问题啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文