asv13
Isem
А если метка находится на нечетной позиции? uint16 уже не прокатит.
Я же общий принцип указал, остальное мелочи
from numpy import *
a = memmap(r'c:\test\W1_RB.EGRID', uint8)
c = where(a==0xff)[0] # позиции всех элементов со значением ff
d = where((a[c+1]>0x31) & (a[c+1]<0x35))[0] # позиции всех элементов со значениями ff32-ff34
# проверка найденных индексов
print a[c[d]] # -> [255 255 255 255 255 ...
print a[c[d]+1] # -> [51 51 51 51 51 51 51 ...
Последовательность из двух символов это просто. Хуже выполнять поиск чего-то более длинного и более сложного чем куча нолей. Тут в отличие от некоторых других языков у библиотеки numpy прямого средства нету :(, а очень жаль, по крайней мере в рассылке советуют использовать стандартный поиск в строке (вот зачем массив в строки перегонять?)
erl
хоть кусок этого файла выложить можешь? Что-то тяжеловато твой код воспринимается, проще начисто переписать. В С# тоже данные перегонял в HEX-строки ? Непойму зачем так усложнять, только для split-ов чтоли…
Кстате можно не перегонять, понимаешь в этом вся гадость этой структуры, что она переменна и у нее на каждой позиции свои поля, но ни длинны поля нет ни какоолибо идентификатора, эти поля следуют один за другим, если поле отсутствует то вместо него пишеться один байт нулей. т.о. получаеться в файле может возникнуть структура следующего вида: (давай уже в hex буду писать) 32 00 ff 34 65 a4 e4 b5 55 45 91 ff ff ff ff ff ff 56 67 ff 34 ff 32 00 ff 35 ab cb 54 66 ff ff 91 3f ff ff ff 32 …. после 32 идет некая структура и вот что бы не ошибиться преходится ее пропускать например 3 первых байта не анализировать и только потом искать ff как конец записи и проверять конец ли это тем, что смотреть следующий байт, если он равен 32 или 34 или 33(последняя запись) то обозначать ео как конец записи …
Понимаю что файл был бы полезен, но не могу его дать , а помошь требуется, понимаю что руки крявые, поэтому и спрашиваю … понимаю что структура файла мягко говоря не очнь располагает к программе в три строки, все понимаю …но что есть то есть