MATLAB中使用fread读取二进制数据时的大端序与小端序处理

matlab里读取二进制数据时,默认按照小端序读取,怎么按照大端序读取

文章目录

  • 前言
  • 一、大端序和小端序是什么?
  • 二、实际例子
    • 1.数据文件
    • 2.fread的参数
  • 总结


前言

只是记录matlab使用的小知识


一、大端序和小端序是什么?

大端序和小端序是在多个字节存储时,指定多字节数据在内存中的存储顺序,存储顺序不同,表示的值也就不同。
大端序是指高位在地址较小的位置。
小端序是指高位在地址较大的位置。
比如地址从左到右依次增加
0-3
存储的二进制数据
0100
那么按照大端序
它的值为6
按照小端序
它的值为2

二、实际例子

1.数据文件

实际的数据文件:
MATLAB中使用fread读取二进制数据时的大端序与小端序处理_第1张图片
如果采用小端序读取:
代码:

clc;
clear;
fid = fopen("2025-02-10 21.48.28.59.bin", 'rb');
data = fread(fid, [1 16], 'uint16', 'ieee-le');
disp(data);

运行结果:
列 1 至 7

   40193       40193       39937       40705       39937       39937       39937

列 8 至 14

   39937       39937       40193       40193       39937       40193       40193

列 15 至 16

   39937       40193

比如40193
MATLAB中使用fread读取二进制数据时的大端序与小端序处理_第2张图片

采用大端序读取:
代码:

clc;
clear;
fid = fopen("2025-02-10 21.48.28.59.bin", 'rb');
data = fread(fid, [1 16], 'uint16', 'b');
disp(data);

运行结果:
列 1 至 15

413 413 412 415 412 412 412 412 412 413 413 412 413 413 412

列 16

413
比如413
MATLAB中使用fread读取二进制数据时的大端序与小端序处理_第3张图片

2.fread的参数

fread参考官方文档
使用格式

A = fread(fileID)
A = fread(fileID,sizeA)
A = fread(fileID,precision)
A = fread(fileID,sizeA,precision)
A = fread(___,skip)
A = fread(___,machinefmt)
[A,count] = fread(___)

A = fread(fileID) 将打开的二进制文件中的数据读取到列向量 A 中,并将文件指针定位在文件结尾标记处。该二进制文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。读取文件后,请调用 fclose(fileID) 来关闭文件。

A = fread(fileID,sizeA) 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fread 按列顺序填充 A。

A = fread(fileID,precision) 根据 precision 描述的格式和大小解释文件中的值。

A = fread(fileID,sizeA,precision) 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fread 按列顺序填充 A。根据 precision 描述的格式和大小解释文件中的值。

A = fread(___,skip) 在读取文件中的每个值之后将跳过 skip 指定的字节或位数。

A = fread(___,machinefmt) 另外指定在文件中读取字节或位时的顺序。

[A,count] = fread(___) 还将返回 fread 读取到 A 中的字符数。您可以将此语法与前面语法中的任何输入参数结合使用。
一般输入参数使用
fileID 文件名 file.bin
sizeA 读取维度 [1 16]
precision 格式 uint16
machinefmt 字节序

总结

matlab使用fread读取文件时需要注意大字节序和小字节序。

你可能感兴趣的:(matlab知识,matlab,开发语言)