这是我数据的一部分。
ª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);
答案 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)))