【发布时间】:2014-01-05 02:27:18
【问题描述】:
我尝试使用 fortran 将 input_file.binary 转换为数字 output_file.txt(或者如果有人有其他想法:pyton、java、c++ ...)。 ascii 文件是一个 11 行 N 列的文件,只有数字(即:1e-21, 0.0, 1 ....)。
我试试这个帖子ASCii to BInary Conversion Program in java,但这与我的想法有点不同:我想读取二进制文件并编写一个 output_file.dat,所以我尝试使用这个 fortran 代码:
program binary
implicit none
integer :: i, n
real, allocatable :: data(:,:)
open(20,file="input.dat",status="unknown",err=88)
n = 0
do
read(20,*,end=1)
n = n+1
end do
1 rewind(20)
allocate(data(n,11))
OPEN(10, file="output_file.txt")
do i = 1, n
read(20,*) data(i,:)
write(10,*) data(i,:)
end do
close(20)
end program binary
当我想用nano file.binary 检查文件时,输出是这样的:
^@^@^@^@^@^@^@^C^@^@^A�^@^@^@^A^@^@^@^A^@^R�M0wc�6 �7�^@^@^@^FA0^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@ �e^A^@^@^@^B+�^[2/[��^@^@^@^FAI�#$
我可以编译该程序,但是当我尝试运行它时,我收到以下错误消息:
forrtl: 严重 (59): 列表导向 I/O 语法错误,单元 20,文件 /.../input.dat 图像 PC 例程线源 ascii 0805D0AA 未知 未知 未知 ascii 0805B14D 未知 未知 未知 ascii 0804A1EA 未知 未知 未知 ascii 08049E67 未知 未知 未知 libc.so.6 B75CF4D3 Unknown Unknown Unknown
非常感谢您的帮助。
【问题讨论】:
-
如果
ascii文件有数字作为文本,那么重新创建文本文件的目的是什么?如果文件有二进制数,那么它不是ascii。请澄清,或显示input.dat的内容。 -
当我尝试使用“nano input.dat”命令打开 input.dat 文件时,内容如下:
-
^@^@^@^@^@^@^@^C^@^@^A�^@^@^@^A^@^@^@^A^@^ R�M0wc�6�7�^@^@^@^FA0^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@@�e^A^@^@^@^B+�^[2/[��^@^@^@^FAI�#$ 很多这个值但是当我打开这个程序(swiftvis)时将 ascii 转换为 txt 我看到了正确的数字。
-
请更新您的问题。输入文件类型是二进制,不是
ASCII. -
尝试用hhdsoftware.com/free-hex-editor打开它并显示为浮动。这将确认二进制文件的格式。
标签: fortran ascii gfortran non-ascii-characters fortran95