C++ 在Matlab中将定长字节数组写入二进制文件
我需要从Matlab中编写一个二进制文件,该文件将由c程序读取 .h文件定义了我试图编写的字符串C++ 在Matlab中将定长字节数组写入二进制文件,c++,c,matlab,binaryfiles,C++,C,Matlab,Binaryfiles,我需要从Matlab中编写一个二进制文件,该文件将由c程序读取 .h文件定义了我试图编写的字符串 char elem[16] 在matlab方面: str = 'abc' % A variable length string <= 15 chars fwrite(fp, str, 'char*1') 我不知道如何强制matlab向str添加一个空字符,并用垃圾缓冲它,直到合适的大小,以便c程序可以读取它 注意我不能修改c代码,所以我需要让Matlab以正确的格式写出文件 下面的代码就
char elem[16]
在matlab方面:
str = 'abc' % A variable length string <= 15 chars
fwrite(fp, str, 'char*1')
我不知道如何强制matlab向str添加一个空字符,并用垃圾缓冲它,直到合适的大小,以便c程序可以读取它
注意我不能修改c代码,所以我需要让Matlab以正确的格式写出文件 下面的代码就是我最后得到的。零最终成为空字符。不确定是否有更优雅的解决方案
out_str = "abc";
out_len = 16;
fwrite(fid_out, out_str, 'char*1');
fwrite(fid_out, zeros(1,out_len - length(out_str)),'char*1');
空字符本质上是零。因此,只需在字符串末尾写零。。。不是角色零。。。实际的数字是零。@rayryeng作为一个不太熟悉matlab的人,有没有更好的方法来将一个带零的字符串缓冲到所需的长度?你需要使用NaN,而不是0。0将作为字符“0”输出到文件中0' != '\是的,只需从字符串长度中计算出需要多少个零即可。在本例中,abc中存储了三个字符,因此需要16-3=13个零。因此,在第一次fwrite调用后执行类似操作:fwritefp,zeros1,13,'uint8';。请注意,我还没有测试过这个,所以请尝试一下并让我知道。你可能是对的,只要你使用正确的编码。