如何从fread获取nbit类型?

时间:2018-05-29 22:13:24

标签: binary octave fread bits file-format

我有一个文件,它是K,17位,小端,无符号整数的串联。在Matlab中,我可以使用fread(fd, K, 'bit17', 'ieee-le')。如何读取octave中文件描述符的17位?

1 个答案:

答案 0 :(得分:0)

您可以逐字节读取文件,然后使用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,[]);