【问题标题】:How do I get nbit types from fread?如何从 fread 获取位类型?
【发布时间】:2018-05-29 22:13:24
【问题描述】:

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

【问题讨论】:

  • 如果一个文件有 48 位(6 字节)并且您一次读取 17 位,当您第二次调用 fread 时会得到什么?你得到第 17-33 位,还是得到第 24-40 位?

标签: binary octave fread bits file-format


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 2020-12-05
    • 2013-01-09
    • 2012-11-07
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多