Is there a way to read 16bit float(mantissa 8bit)bin file?
7 次查看(过去 30 天)
显示 更早的评论
I've found a function CustomFloat but I can't find a way to read the file...
it goes like this
00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF
8 个评论
James Tursa
2022-9-7
编辑:James Tursa
2022-9-7
@Walter Roberson Would also need to know whether the significand is normalized to 1.0 binary or 0.1 binary. This ties in with the exponent bias, of course.
采纳的回答
Walter Roberson
2022-9-7
str = "00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF 46 C0 B9 40"
A = sscanf(str, "%2x", [1 inf]);
if mod(numel(A), 2) == 1; A(end+1) = 0; end %pad if odd length
MSB = A(1:2:end);
mask = MSB >= 128;
MSB(mask) = MSB(mask) - 256;
LSB = A(2:2:end);
out = MSB + LSB/256;
format long g
out.'
0 个评论
更多回答(1 个)
Chunru
2022-9-5
str = "00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF"
a = sscanf(str, "%s%s", inf);
n = floor(length(a)/4)
afi = fi(0, 1, 16, 7); % signed, 16-bit word, 7-bit fraction
for i=1:n
h = a((i-1)*4 + (1:4)); % the hex from data input
afi.hex = h; % assign the hex to fi
d = afi.double; % convert to double
fprintf("%s : %f\n", afi.hex, afi.double)
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Digital Filter Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!