s1136432000 2021-07-07 10:05 采纳率: 0%
浏览 184
已采纳

关于matlab十进制数转二进制数的问题

下面是我将一组十进制数转换为32位二进制数,在写到txt文件里的程序:
si_b={};
l=length(Si);
si_coefile=fopen('wave_si_Fs24g_B800mt.txt','w');
for coen=1:length(si)
if(si(coen)<0)
si_b{coen}=(dec2bin(2^32+si(coen)));
else
si_b{coen}=(dec2bin(si(coen)));
end
if(coen==length(si))
fprintf(si_coefile,'%032d',si_b{coen});
else
fprintf(si_coefile,'%032d \n',si_b{coen});
end
end
fclose all;

但生成txt文件里的数据是这样的:
0000000000000000000000000000000
000000000000000000001.111111e+31
000000000000000000001.111111e+31
000000000000000000001.001101e+20
000000000000000000001.111100e+20
000000000000000000001.111111e+31
000000000000000000001.111111e+31
000000000000000000001.111101e+20
00000000000001010101000001111040
000000000000000000001.111111e+31
......

想问一下有没有大佬指导怎么解决。。。

  • 写回答

1条回答 默认 最新

  • s1136432000 2021-07-07 10:50
    关注

    已解决。

    将fprintf(si_coefile,'%032d',si_b{coen});
    改为:
    fprintf(si_coefile,'%032s',si_b{coen});

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?