Разбор numy-списка, прочитанного из двоичного файла через fromfile - PullRequest
1 голос
/ 14 мая 2019

У меня есть 1D массив целых чисел, считанный из двоичного файла через

data = np.fromfile(file.dat, 'u1')

, где данные возвращаются

array([242, 255, 101, 0, 124, 0, 86, 0, 33, 0, 
       112, 0, 32, 1, 74, 1, 195, 0, 16, 0], dtype=uint8)

0's в серии представляют дополнительные биты, используемые для значенийсверх или по стандарту 256. Например, 244 в индексе 0 должно быть -14 и представлено 255 (или 256) - 242. И наоборот, значение в индексе 13 - чтение как 32 является действительностью 256 + 32 или 288Я пытаюсь заставить приведенный выше массив выглядеть так -

[-14, 101, 124, 86, 33, 112, 288, 330, 195, 16]

Я думаю, что я хочу что-то, что использует индекс и значение для оценки предыдущего значения, если найдены значения 1 или 255.

Я начал с нижеприведенного, но потерял поток в конце дня.

for i, a in enumerate(data):
    if a == 255:
       neg = i,a

Если кто-то может порекомендовать лучший способ обработки двоичных значений, для которых я открытузнавать об этом также.Помощь оценена!

1 Ответ

1 голос
/ 14 мая 2019

Вы можете просматривать до '<i2' (< обозначает младший порядок, i для целого числа со знаком и 2 для 2 байтов)

x = np.array([242, 255, 101, 0, 124, 0, 86, 0, 33, 0, 
       112, 0, 32, 1, 74, 1, 195, 0, 16, 0], dtype=np.uint8)

x.view('<i2')
# array([-14, 101, 124,  86,  33, 112, 288, 330, 195,  16], dtype=int16)

Или вы можете использовать '<i2' напрямую с fromfile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...