2013-07-08 2 views
0

У меня есть текстовый файл, который мне нужно прочитать, в котором есть разное количество столбцов шестнадцатеричных данных в зависимости от строки. Я пытаюсь прочитать все это, а затем манипулировать шестнадцатеричным, но я могу найти хороший способ прочитать файл. Я хочу прочитать в первых пяти столбцах перед шестнадцатеричным (они всегда будут там) в виде строк , а затем в конечном итоге манипулировать шестнадцатеричным значением в десятичную и графическую. Количество шестнадцатеричных слов в каждой строке отличается. Я пытаюсь использовать сканирование текста, но могу понять, как это сделать. Любая помощь будет принята с благодарностью.Как читать текстовый файл с шестнадцатеричными столбцами переменной в матрице?

Вот некоторые примерные данные:

х 0: 47950 0x ---- 001: 00: 07: 56.63 16-R-08-04 0x8000 0x0012 0x0000

х 0: 136994 0x- --- 001: 00: 13: 14.35 16-R-07-04 0x8000 0x0012 0x0000 0x0000

x 0: 532637 0x ---- 001: 00: 40: 29.86 15-R-08-04 0x8000 0x0012 0x0000 0x0000 0x0000 0x0000

х 0: 532637 0x ---- 001: 00: 40: 29.86 16-R-04-04 0x8000 0x0012 0x0000 0x0000 0x0000

х 0: 47950 0x ---- 001: 00: 07: 56,63 16-R-08-04 0x8000 0x0012 0x0000

ответ

1

Это может заставить вас в правильном направлении.

В зависимости от размера файла fgetl() с манипуляциями с строкой может быть очень медленным, но, вероятно, он будет работать как первый проход.

fid = fopen('hex.txt'); 

approxNumLines = 10; % Pre-allocate for speed 
realNumLines = 0; % Counter variable 

resultingCellArray = cell(approxNumLines,1); % Pre-allocate for speed 


line = fgetl(fid); % Get the first line 
while line ~= -1 
    realNumLines = realNumLines + 1; 
    resultingCellArray{realNumLines} = strsplit(line); 
    line = fgetl(fid); 
end 

resultingCellArray = resultingCellArray(1:realNumLines); 

Вы должны будете сделать некоторую ячейку HEX для матричных операций после этого, но это должно быть довольно прямо вперед, в зависимости от того, как именно вы хотите.