将Hex转换为Decimal并将结果合并到matlab中的一个单元格中

时间:2016-12-13 11:53:04

标签: arrays matlab binary hex cell-array

我有以下十六进制值:

 a = '55 D1 1F 81'; 
 b = '9A D2 1F 81'; 
 c = 'EF D3 1F 81'; 
 d = '79 D4 1F 81';

我希望将它们转换为二进制,然后转换为十进制。 我想要的结果如下所示。

enter image description here

我也写了一段代码。但它没有给我所需的结果。

它将数据转换为二进制,但翻转二进制值,然后混淆最终的十进制结果。

以下是代码:

 a = '55 D1 1F 81'; 
 b = '9A D2 1F 81'; 
 c = 'EF D3 1F 81'; 
 d = '79 D4 1F 81';


s = {a;b;c;d};

%s = cellfun(@strsplit, s, 'UniformOutput', false);
s = regexp(s,'(\w)','match');    
s = vertcat(s{:});
%s = fliplr(s);

% Iterate over each row
for rowNum = 1:size(s,1)

    % To build up binary string from left to right
    binaryString = [];

    % Iterate over each column
    for colNum = 1:size(s,2)

        % Convert hex -> dec -> 8-bit binary word        
        outputBin = dec2bin(hex2dec(s{rowNum,end+1-colNum}), 4);
        binaryString = [binaryString, outputBin]; 

        % Save solution to output array:
        outputBinary{rowNum, colNum} = binaryString;
        outputDec(rowNum, colNum) = bin2dec(binaryString);
    end
end

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下功能:

plm

例如,对于数组function C = HDB(s) %Hex Dec Bin s = regexp(s,'(\w)','match'); c1 = flip([s{:}].'); len = 1:length(c1); hex = arrayfun(@(x) c1(1:x).',len,'UniformOutput',0) C.hex = arrayfun(@(x) flip(hex{x}),len,'UniformOutput',0) C.dec = arrayfun(@(x) hex2dec(C.hex{x}),len,'UniformOutput',0) C.bin = arrayfun(@(x) dec2bin(C.dec{x}),len,'UniformOutput',0) end ,您可以使用:

a

<强>输出:

C = HDB(a)