Как мне получить nbit-типы из fread? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть файл, который представляет собой конкатенацию K, 17-разрядных чисел с прямым порядком байтов, без знака.В Matlab я могу использовать fread(fd, K, 'bit17', 'ieee-le').Как мне прочитать 17 бит из дескриптора файла в octave?

1 Ответ

0 голосов
/ 30 мая 2018

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

nbits = 17;
fd = fopen("myfile","rb");
bytes = fread(fd,Inf,"uint8=>uint8");
n = numel(bytes);
bits = false(8, n);
for k = 1:8
    bits(k,:)=bitget(bytes,k);
end
count = floor(n * 8/nbits);
val = 2.^(0:nbits-1) * reshape(bits(1:count*nbits),nbits,[]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...