fread python有没有_用Python从Matlab中获取“ fread”是什么意思?

我实际上对Matlab不了解,因此需要将一些解析例程转换为Python。它们是用于大型文件,它们本身又被分为“块”,而从头到尾,校验和都位于文件的顶部,这使我一头雾水。

Matlab在这里到底发生了什么?

status = fseek(fid, 0, 'cof');

fposition = ftell(fid);

disp(' ');

disp(['** Block ',num2str(iBlock),' File Position = ',int2str(fposition)]);

% ----------------- Block Start ------------------ %

[A, count] = fread(fid, 3, 'uint32');

if(count == 3)

magic_l = A(1);

magic_h = A(2);

block_length = A(3);

else

if(fposition == file_length)

disp(['** End of file OK']);

else

disp(['** Cannot read block start magic ! Note File Length = ',num2str(file_length)]);

end

ok = 0;

break;

end

fid是当前正在查看的文件iBlock是一个计数器,您正在文件中对其进行“阻止”

magic_l和magic_h稍后将用于校验和,这是该代码(直接从上面的代码执行):

disp(sprintf(' Magic_L = %08X, Magic_H = %08X, Length = %i', magic_l, magic_h, block_length));

correct_magic_l = hex2dec('4D445254');

correct_magic_h = hex2dec('43494741');

if(magic_l ~= correct_magic_l | magic_h ~= correct_magic_h)

disp(['** Bad block start magic !']);

ok = 0;

return;

end

remaining_length = block_length - 3*4 - 3*4; % We read Block Header, and we expect a footer

disp(sprintf(' Remaining Block bytes = %i', remaining_length));

这是怎么回事与%08X和hex2dec东西?

另外,为什么指定3*4而不是12?

确实,我想知道如何[A, count] = fread(fid, 3,

'uint32');在Python中复制,io.readline()就像拉文件的前3个字符一样。抱歉,如果我在此处缺少要点。只是io.readline(3)在文件上使用似乎会返回它不应该返回的内容,而且block_length当它可能很长时,我不知道该如何将其容纳在单个字节中。

感谢您阅读本文。希望您能理解我想知道的内容!(任何见解都值得赞赏。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值