14.2.16二进制输入/输出

Octave可以使用以下函数读取和写入二进制数据freadfwrite,以具有相同名称的标准C函数为模式。它们能够自动交换整数数据的字节顺序,并在读取数据时在支持的浮点格式之间进行转换。

 
: val = fread (fid)
: val = fread (fid, size)
: val = fread (fid, size, precision)
: val = fread (fid, size, precision, skip)
: val = fread (fid, size, precision, skip, arch)
: [val, count] = fread (…)

从文件描述符指定的文件中读取二进制数据fid.

可选参数size指定要读取的数据量,可以是其中之一

Inf

尽可能多地读取,返回一个列向量。

nr

阅读至nr元素,返回一个列向量。

广告
[nr,Inf]

尽可能多地阅读,返回一个矩阵nr排。如果读取的元素数量不是的精确倍数nr,最后一列用零填充。

广告
[nr, nc]

阅读至nr * nc元素,返回矩阵nr排。如果读取的元素数量不是精确的倍数nr,最后一列用零填充。

广告

如果size省略,值为Inf是假定的。

可选参数precision是指定要读取的数据类型的字符串,可以是其中之一

"uint8"默认

8位无符号整数。

广告
"int8"
"integer*1"

8位有符号整数。

广告
"uint16"
"ushort"
"unsigned short"

16位无符号整数。

广告
"int16"
"integer*2"
"short"

16位带符号整数。

广告
"uint"
"uint32"
"unsigned int"
"ulong"
"unsigned long"

32位无符号整数。

广告
"int"
"int32"
"integer*4"
"long"

32位有符号整数。

广告
"uint64"

64位无符号整数。

广告
"int64"
"integer*8"

64位有符号整数。

广告
"single"
"float"
"float32"
"real*4"

32位浮点数字。

广告
"double"
"float64"
"real*8"

64位浮点数字。

广告
"char"
"char*1"

8位单个字符。

广告
"uchar"
"unsigned char"

8位无符号字符。

广告
"schar"
"signed char"

8位有符号字符。

广告

默认精度为"uint8".

这个precision参数还可以指定可选的重复次数。例如32*单原因fread以读取32个单精度浮点数字的块。阅读收件箱与skip参数

这个precision参数还可以指定类型转换。例如int16=>int32原因fread以读取16位整数值并返回32位整数值的数组。默认情况下,fread返回一个双精度数组。异形*类型是'的简写TYPE=>TYPE’.

转换计数和重复计数可以被组合。例如,规格32*单=>单原因fread以读取单精度浮点值块,并返回单精度值数组,而不是双精度值的默认数组。

可选参数skip指定读取每个元素(或元素块)后要跳过的字节数。如果未指定,则假定值为0。如果最后一个块读取未完成,则省略最后一个跳过。例如

fread (f, 10, "3*single=>single", 8)

将省略最后的8字节跳过,因为最后一次读取将不是3个值的完整块。

可选参数arch是指定文件的数据格式的字符串。有效值为

"native""n"

当前计算机的格式。

广告
"ieee-be""b"

IEEE big-endian。

广告
"ieee-le""l"

IEEE little-endian。

广告

如果没有arch给定了调用中使用的值fopen其创建了文件描述符。否则,使用指定的值fread覆盖的fopen并确定数据格式。

输出参数val包含从文件中读取的数据。

可选返回值count包含读取的元素数。

详见: fwrite, fgets, fgetl, fscanf, fopen.

广告
 
: count = fwrite (fid, data)
: count = fwrite (fid, data, precision)
: count = fwrite (fid, data, precision, skip)
: count = fwrite (fid, data, precision, skip, arch)

将二进制形式的数据写入文件描述符指定的文件fid.

参数data是要写入文件的值的矩阵。这些值是按列的主要顺序提取的。

剩下的参数precision, skiparch可选,并被解释为fread.

输出count是成功写入的数据项数。

编程注意事项:的行为fwrite如果中的值data太大,无法满足指定的精度。

详见: fread, fputs, fprintf, fopen.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2