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

Read hexadecimal from file with 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

所以我无法读取任何值...?我什至无法阅读第一个字符串?我做错了什么超级明显的错误吗?

可能是打字错误,但对于第一行,您使用的是 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)