使用scilab从文件中读取十六进制数

时间:2015-09-14 23:11:12

标签: scilab

我有一个如下所示的文件:

Time    M1:Address 480008C0
0   79F9446F
0.000125    7AE7446B
0.00025 7BA8446F
...

由标签分隔的2个数字,一个是十六进制数字。我期待在scilab中将这些读成十进制数组。我试图按如下方式打开并阅读该文件:

u=mopen('proper_log_with_fail.txt','r'); // open the file for reading
s = mscanf(u, '%s'); // Forget the first line
[time,val]=mfscanf(u,'%e\t%x'); // Get the second line

所以我无法阅读任何价值......?我甚至无法读取第一个字符串?我做了一些非常明显的错误吗?

1 个答案:

答案 0 :(得分:2)

可能是一个拼写错误,但是对于您使用mscanf的第一行应该是mfscanf来读取文件。更改此项时,它会显示您的第一行不匹配,请注意%s仅匹配一个字,然后在下一个空格处停止。 要读取(并丢弃)第一行,请使用mgetl并告诉它读取1行。如果输入文件的其余部分是以相同方式格式化的数据,则可以使用mfscanfniter参数来保持匹配,直到文件结尾(EOF)。

file_path = 'proper_log_with_fail.txt'; 

// open the file for reading
fd=mopen(file_path,'r'); 

// Read/display header line
number_of_lines_to_read = 1;
header = mgetl(fd, number_of_lines_to_read);
disp(header);

// Scan all lines up until EOF 
niter = -1
s = mfscanf(niter, fd, '%e %x'); 
disp(s)

// Close the file after reading
mclose(fd)