我有一个二进制矢量,我转换为十六进制。我希望这个十六进制数据转到.bin(或任何其他fornat)文件。由于这是一个向量,我尝试首先将其转换为字符串,以便可以格式化十六进制数据,然后输出到文件。请参阅下面我尝试使用的代码。还显示了问题的快照。如您所见,所有转换的十六进制数据都存在于1个单元格中。我希望每个单元格都是字节顺序。
my_new_vector = binaryVectorToHex(M); %M is my input binary matrix
%cellfun(FormatHexStr, mat2cell(my_new_vector), 'UniformOutput', false)
%new_vector = mat2cell(my_new_vector);
vect2str(my_new_vector); %[matlab file exchange function][2] for converting vector to string
FormatHexStr(my_new_vector,2); %FormatHexStr is a function for formatting hex values which requires a hex string as an input [function is here][3]
[n_rows,n_cols] = size(my_new_vector);
fileID = fopen('my_flipped_data.bin','wt');
for row = 1:n_cols
fprintf(fileID,'%d\n',my_new_vector(:,row));
end
fclose(fileID);
答案 0 :(得分:1)
在uint8(byte)变量中将二进制值转换为8的块,然后将其写入文件。
nbytes = floor(length(M)/8);
bytevec = zeros(1,nbytes, 'uint8');
for i = 1:8
bytevec = bytevec + uint8((2^(8-i))*M(i:8:end));
end
fileID = fopen('my_flipped_data.bin','wb');
fwrite(fileID, bytevec);
fclose(fileID);
这将第一位写为第一个字节的MSB。使用(2 ^(i-1))作为LSB的第一位。