二进制到十六进制到Matlab中的文件

时间:2014-05-30 10:34:58

标签: string matlab vector

我有一个二进制矢量,我转换为十六进制。我希望这个十六进制数据转到.bin(或任何其他fornat)文件。由于这是一个向量,我尝试首先将其转换为字符串,以便可以格式化十六进制数据,然后输出到文件。请参阅下面我尝试使用的代码。还显示了问题的快照。如您所见,所有转换的十六进制数据都存在于1个单元格中。我希望每个单元格都是字节顺序。enter image description here

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);

1 个答案:

答案 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的第一位。