【发布时间】:2017-01-02 19:46:35
【问题描述】:
在 matlab 中,我有一个带有十六进制值的元胞数组块。
a = '40 C0 70 EB';
b = '40 C0 80 94';
c = '40 C0 90 59';
s = {a;b;c};
我想以这样的方式水平遍历每一行;
第一个字节 'EB' 必须转换为二进制(即 EB = 1110 1011 = 8 位)并保存在某个变量/数组中
-
然后,'EB & 70' 必须转换为二进制,但它们的二进制值必须一起存储(即 EB & 70 = 11101011 01110000 = 16 位)在某个变量/数组中。
李> 同样,“EB & 70 & C0”在某些变量/数组中转换为二进制(即 EB & 70 & C0 = 11101011 01110000 11000000 = 24 位)。
类似地,'40 C0 70 EB'(即 40 & C0 & 70 & EB = 11101011 01110000 11000000 01000000 = 32 位)
最后,必须对其余的行执行相同的操作。
我已经编写了一个代码来将单个十六进制值转换为等效的二进制值,但我不知道如何从这里开始。
a = '40 C0 70 EB';
b = '40 C0 80 94';
c = '40 C0 90 59';
s = {a;b;c};
s = cellfun(@strsplit, s, 'UniformOutput', false);
s = vertcat(s{:});
dec = hex2dec(s);
bin = dec2bin(dec);
x=cellstr(bin);
bin = mat2cell(x, repmat(size(s,1),1,size(s,2)));
关于如何完成这些壮举有什么建议吗?
【问题讨论】:
标签: arrays matlab binary hex cell-array