栗凛铃 发表于 2022-10-3 13:53:57

write中unformatted格式输出,头尾二进制码的意义。

write函数在输出数据到文件时,使用unformatted格式,会在数据的头部和尾部各附加一个Int32类型的数表示数据的字节长度。但是当输出的数据字节长度大于Int32的最大值时,我发现数据头部有一个Int32,尾部却存在3个Int32长度的字符,无法解读其意义,从而造成fortran输出的文件没有办法用julia读取。在此请教write函数unformatted格式的细节。

li913 发表于 2022-10-3 15:12:09

不要用 unformatted,用stream,这才是真正的二进制,纯粹的二进制、
http://fcode.cn/guide-4-1.html

栗凛铃 发表于 2023-6-4 02:23:22

li913 发表于 2022-10-3 15:12
不要用 unformatted,用stream,这才是真正的二进制,纯粹的二进制、
http://fcode.cn/guide-4-1.html ...

我无法改变收到的数据格式,能否告诉我从哪里可以查到unformatted的编码的相关规范呢?

fcode 发表于 2023-6-4 10:47:11

不是给你了吗?
http://fcode.cn/guide-4-1.html

大哥,一年了,您没点开看一看吗?

li913 发表于 2023-6-5 09:57:01

栗凛铃 发表于 2023-6-4 02:23
我无法改变收到的数据格式,能否告诉我从哪里可以查到unformatted的编码的相关规范呢? ...

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

li913 发表于 2023-6-5 10:03:17

这个可能是你需要的

li913 发表于 2023-6-5 11:23:44

事实上,当数据量过大,他会自动分段输出,你这个情况就是分成3段输出,所以文件中会多出4个4字节数据(数据量小,一段输出,只有首尾两个4字节数据,末尾这个数据其实代表下一段的数据量,应该为0)。
但由于输出大小超过int32范围,表示大小的值就乱了,进而输出的结果就乱了。
总结就是,数据量太大,不能用这种方法输出。

fcode 发表于 2023-6-5 15:36:32

一个记录4GB的数据量,也是有点大~~
页: [1]
查看完整版本: write中unformatted格式输出,头尾二进制码的意义。