我有以下十六进制值:
a = '55 D1 1F 81';
b = '9A D2 1F 81';
c = 'EF D3 1F 81';
d = '79 D4 1F 81';
我希望将它们转换为二进制,然后转换为十进制。 我想要的结果如下所示。
我也写了一段代码。但它没有给我所需的结果。
它将数据转换为二进制,但翻转二进制值,然后混淆最终的十进制结果。
以下是代码:
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
有人可以帮我解决这个问题吗?
答案 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)