我正在尝试将一些2D坐标写入二进制文件。 但是,我从已写入的文件中读取的内容与原始数据完全不同。 此处给出详细信息。
例如,我有45(X,Y)点。 X和Y均为小于600的整数。模拟要求将它们中的每个存储两个字节(8位),并保留每个字节的2个高位(对于X,保留位用.mrk填充,即1或2;对于Y,只需使用0代替)。 在这种情况下,14位二进制数可以表示最大值16383。我用几种方式写入数据:
in_tmp是由点号(.nm),点保留标记(.mrk)和点坐标(.coor)组成的结构
for i=1:in_tmp.nm
x1 = dec2bin(in_tmp.coor(i,1));
y1 = dec2bin(in_tmp.coor(i,2));
t1 = in_tm.mrk(i);
if(t1==1)
t2 = '01';
t2b = 1;
elseif(t1==2)
t2 = '10';
t2b = 2;
end
lenx = 16-length(x1);
leny = 16-length(y1);
x1hl = strcat(t2, '00000000000000'); % High and low
y1hl = '0000000000000000';
x1a = strcat(x1hl(1:lenx), num2str(x1));
y1a = strcat(y1hl(1:leny), num2str(y1));