---
title: Fortran大小端问题
description: "Fortran对二进制文件进行读写的时候存在大小端的问题，在前期的编译阶段不容易被发现，在后续的程序运行测试的时候，由于大小端差异引起读取的数据异常，导致程序发生coredump或者计算结果错误，因此建议在迁移前梳理迁移程序中有关二进制文件读写的流程，确认是否存在平台差异导致的大小端问题。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0086.html
sourcePath: /source/zh/kunpenggrf/codeprtr/kunpengtaishanporting_12_0086.html
indexId: dff567100f4a9245b8bd3d05c335141ad0fa74ad0dd689c5e020f49c542bba9d65
---
# Fortran大小端问题

Fortran对二进制文件进行读写的时候存在大小端的问题，在前期的编译阶段不容易被发现，在后续的程序运行测试的时候，由于大小端差异引起读取的数据异常，导致程序发生coredump或者计算结果错误，因此建议在迁移前梳理迁移程序中有关二进制文件读写的流程，确认是否存在平台差异导致的大小端问题。

例如：

在从IBM（PowerPC）平台（大端字节序）迁移到鲲鹏平台（小端字节序）时，需要注意大小端字节序的转换。转换方式如下。

- 方法一：GFortran增加编译选项-fconvert=big-endian使用大端字节序。
- 方法二：open中增加参数convert='big_endian'。

```
OPEN(11,file=TRIM(bin_name),status='old',access='direct',form="Unformatted",&recl=181*360*124*4,convert='big_endian',IOSTAT=io_err)
```
