fortran - 在未格式化的直接访问中打开文件时,应在 recl 中使用什么?
问题描述
我试图完全理解如何在 Fortran 中处理二进制文件。具体来说,我正在阅读此https://atmos.washington.edu/~salathe/osx_unix/endian.html,其中介绍了当要写入的记录是固定长度时如何编写二进制文件。考虑到系统的字节序是相同的(据我所知,大多数实际系统是 2021 年的情况),这种情况旨在允许一种可以轻松地从其他编程语言读取/写入的原始格式现在是小尾数)。
在文章中,据说使用direct
和打开文件unformatted
。
open (unit=1, file='out.r4', form='unformatted', access='direct', recl=m*n*sizeofreal)
如果我正确理解它的工作原理,该recl
参数用于控制要写入的记录的大小。
recl
我对如何在 Fortran 中使用有几个疑问:
- 它是记录的大小(以字节为单位)吗?
- 它取决于编译器吗?
- 它是否取决于我们使用的 Fortran 标准?
- 如果是这样,标准之间有什么区别?
recl
如果我们编写派生类型或“常规”类型,其含义是否取决于?
我的实验表明,bytes
在编写派生类型记录时使用派生类型的大小就足够了;但我不知道这是否取决于我使用的特定编译器。
默认情况下,我尝试使用flang
Fortran 95 来做事(只是为了学习一个完全兼容的标准f2py
)。
解决方案
推荐阅读
- python - Try/except 仍然在 try 块中抛出错误
- python-3.x - 实例化类时如何指定包?
- c++ - 使用带有 Imageblocks 的 Metal API 的模板“隐式实例化”错误
- php - 使用 laravel 调度程序在共享主机上的 Cron 作业不起作用
- java - 模拟器视图只显示来自 sw320dp 的值?
- knex.js - 使用 max() 实现 havingRaw() 时出错
- python - 使用 python 的 excel 工作表
- r - 我希望使用 ggplot 和 dplyr 将我的数据百分比是/否作为每人一个栏
- c# - 显示验证错误的工具提示适用于绑定到 POCO 的 TextBlock,但不适用于 POCO 中的 Property。为什么?
- c# - 如何在网格单元格中为项目设置动画?