matlab里读取二进制数据时,默认按照小端序读取,怎么按照大端序读取
只是记录matlab使用的小知识
大端序和小端序是在多个字节存储时,指定多字节数据在内存中的存储顺序,存储顺序不同,表示的值也就不同。
大端序是指高位在地址较小的位置。
小端序是指高位在地址较大的位置。
比如地址从左到右依次增加
0-3
存储的二进制数据
0100
那么按照大端序
它的值为6
按照小端序
它的值为2
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
采用大端序读取:
代码:
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
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读取文件时需要注意大字节序和小字节序。