使用 matlab 从文件导入十六进制数据
这是我的数据的一部分。
ª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);
This is a part of my data.
ªU€ÿ ÿ dô @ @›ÿÿ;< …æ ³ 3m ...
It is saved in a file. When I look at it with a hex-editor I can see the hex-values. How can I read this "hex-data" with matlab?
EDIT: I get this error:
??? Error using ==> hex2dec at 38
Input string found with characters other than 0-9, a-f, or A-F.
with this code:
a = fread(fid,1,'uint32','l');
fprintf('%X',a)
b = hex2dec(a);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
hex2dec() 需要一个十六进制数字字符串作为输入。
通过您的 fread 语句,我怀疑您的 'a' 变量将是一个整数*4,因此出现错误消息,我的理解是精度已经将十六进制字符串转换为您声明的类型。如果您想通过 hex2dec 传递该值,那么您需要创建一个字符串输入。
你知道二进制文件的格式吗?即数据的第一个值是整数*4吗?
编辑:添加十六进制输出
响应评论,当您读取数据时,MATLAB 正在将二进制数据流转换为您定义的格式。如果您想获取十六进制数据流,那么最简单的方法是将它们转换回十六进制。
“a”将是十六进制格式的所有值的列表,并且应与您在十六进制编辑器中看到的内容匹配。
hex2dec() expects a hexadecimal number string as input.
With your fread statement I suspect that your 'a' variable will be an integer*4 hence the error message, my understanding being that the precision has already converted the hex string to the type you've declared. If you want to pass this value through hex2dec then you'll need to create a string input.
Do you know the format of your binary file? i.e. is the first value of the data an integer*4?
EDIT: added hex output
In response to the comment, as you read the data in, MATLAB is converting the binary data stream into the format you defined. If you want to get the stream of hexadecimal data then the simpliest way is to convert them back into hexadecimal.
'a' will be a list of all the values in hexadecimal format and should match what you see in your hex editor.