将十六进制转换为十进制并将结果合并到Matlab中的一个单元格中

用户名

我有以下十六进制值:

 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

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

Obchardon

您可以使用以下功能:

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)

输出:

hex = 
{
  [1,1] = 1
  [1,2] = 81
  [1,3] = F81
  [1,4] = 1F81
  [1,5] = 11F81
  [1,6] = D11F81
  [1,7] = 5D11F81
  [1,8] = 55D11F81
}
dec = 
{
  [1,1] =  1
  [1,2] =  129
  [1,3] =  3969
  [1,4] =  8065
  [1,5] =  73601
  [1,6] =  13705089
  [1,7] =  97591169
  [1,8] =  1.4398e+09
}
bin = 
{
  [1,1] = 1
  [1,2] = 10000001
  [1,3] = 111110000001
  [1,4] = 1111110000001
  [1,5] = 10001111110000001
  [1,6] = 110100010001111110000001
  [1,7] = 101110100010001111110000001
  [1,8] = 1010101110100010001111110000001
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在cmake中从十进制转换为十六进制

如果转换结果为单个十六进制字母,则将十进制转换为十六进制并放置一个起始零 (Bash)

从列表中删除逗号并将十六进制转换为十进制值

如何将两个十六进制数字合并为一个数字,然后将其转换为十进制。

将十六进制十进制IP地址转换为c#中的点表示法十进制

应用 MATLAB sscanf 将列向量中的多个元素从十六进制转换为十进制

将C中的十六进制字符串转换为十进制

如何将scala中的十六进制十进制列转换为int

将C中的十六进制转换为十进制数

Python将十进制转换为十六进制

PHP将十进制转换为十六进制

将十六进制转换为十进制

Dart:将十进制转换为十六进制

lex:将十六进制转换为十进制

将十六进制转换为十进制会得到不正确的结果

将十六进制转换为十进制不会返回结果

Matlab转Python;将十六进制地址转换为十进制 numpy 数组

Ada中的十六进制十进制转换

十六进制到java中的十进制转换

使用python将十六进制十进制数字转换为十进制

使用awk将第一列从十六进制转换为十进制

Python:将一位数字十进制转换为十六进制

我正在开发一个十六进制到十进制转换器

在JAVA中将十六进制转换为十进制并将十进制转换为时间戳

在javascript中,如何将十进制(带小数点)转换为十六进制字符串

将 uint16_t 十六进制数转换为 C 中的十进制数

将文本文件中的十进制值列表转换为十六进制格式

如何仅通过使用函数将bash /脚本中的十六进制转换为十进制

如何在此python程序中调用递归函数,将十进制数转换为十六进制?