使用matlab从文件导入十六进制数据

时间:2011-03-09 11:40:39

标签: matlab import hex

这是我数据的一部分。

ªU€ÿ       ÿ  dô      @           @›ÿÿ;<  …æ  ³   3m ...

它保存在文件中。当我用十六进制编辑器查看它时,我可以看到十六进制值。如何用matlab读取这个“十六进制数据”?

编辑:我收到此错误:

??? Error using ==> hex2dec at 38
Input string found with characters other than 0-9, a-f, or A-F.

使用此代码:

a = fread(fid,1,'uint32','l'); 
fprintf('%X',a) 
b = hex2dec(a);

2 个答案:

答案 0 :(得分:2)

hex2dec()需要一个十六进制数字字符串作为输入。

>> hex2dec('28')

使用你的fread语句我怀疑你的'a'变量将是一个整数* 4因此错误信息,我的理解是精度已经将十六进制字符串转换为你声明的类型。如果你想通过hex2dec传递这个值,那么你需要创建一个字符串输入。

>> hex2dec(num2str(28));

您知道二进制文件的格式吗?即数据的第一个值是整数* 4?

编辑:添加十六进制输出

在回答评论时,当您读取数据时,MATLAB正在将二进制数据流转换为您定义的格式。如果你想获得十六进制数据流,那么最简单的方法是将它们转换回十六进制。

a=dec2hex(fread(fid))

'a'将是十六进制格式的所有值的列表,并且应该与您在十六进制编辑器中看到的值相匹配。

答案 1 :(得分:1)

q=dec2bin(hex2dec(num2str(p)))