Fortran Coder

标题: write中unformatted格式输出,头尾二进制码的意义。 [打印本页]

作者: 栗凛铃    时间: 2022-10-3 13:53
标题: write中unformatted格式输出,头尾二进制码的意义。
write函数在输出数据到文件时,使用unformatted格式,会在数据的头部和尾部各附加一个Int32类型的数表示数据的字节长度。但是当输出的数据字节长度大于Int32的最大值时,我发现数据头部有一个Int32,尾部却存在3个Int32长度的字符,无法解读其意义,从而造成fortran输出的文件没有办法用julia读取。在此请教write函数unformatted格式的细节。

作者: li913    时间: 2022-10-3 15:12
不要用 unformatted,用stream,这才是真正的二进制,纯粹的二进制、
http://fcode.cn/guide-4-1.html
作者: 栗凛铃    时间: 2023-6-4 02:23
li913 发表于 2022-10-3 15:12
不要用 unformatted,用stream,这才是真正的二进制,纯粹的二进制、
http://fcode.cn/guide-4-1.html ...

我无法改变收到的数据格式,能否告诉我从哪里可以查到unformatted的编码的相关规范呢?
作者: fcode    时间: 2023-6-4 10:47
不是给你了吗?
http://fcode.cn/guide-4-1.html

大哥,一年了,您没点开看一看吗?
作者: li913    时间: 2023-6-5 09:57
栗凛铃 发表于 2023-6-4 02:23
我无法改变收到的数据格式,能否告诉我从哪里可以查到unformatted的编码的相关规范呢? ...

这个很老的书有,现在不用了。

QQ截图20230605095508.jpg (166.88 KB, 下载次数: 139)

QQ截图20230605095508.jpg

作者: li913    时间: 2023-6-5 10:03
这个可能是你需要的

1.jpg (255.77 KB, 下载次数: 141)

1.jpg

作者: li913    时间: 2023-6-5 11:23
事实上,当数据量过大,他会自动分段输出,你这个情况就是分成3段输出,所以文件中会多出4个4字节数据(数据量小,一段输出,只有首尾两个4字节数据,末尾这个数据其实代表下一段的数据量,应该为0)。
但由于输出大小超过int32范围,表示大小的值就乱了,进而输出的结果就乱了。
总结就是,数据量太大,不能用这种方法输出。
作者: fcode    时间: 2023-6-5 15:36
一个记录4GB的数据量,也是有点大~~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2