0

我有一长串十六进制值,在某些时候失去了格式,现在看起来像一个字符串,例如:

Str1=
    001ba212c6b4001f162e9ab208004500003f1bdc40008011322ea9fe58a6a9fe0001c350c350002b0345001ba212c6b400007100be002c151300be0000000108000b000133ffffffffffffffff

我想分开八位字节。得到一个八位位组划分如下的字符串向量会很棒:

Str2=
    00 1b a2 12 ... 00 00 00

我尝试过的最直观的方法是设法分离单个字符,但不是单个十六进制值,而是产生一个带有两个字符的行向量:

for i=2:2:length(Str1)       
    Str2(i/2,1)=Str1(i-1);       
    Str2(i/2,2)=Str1(i);    
end

输出是:

Str2=
    00
    1b
    a2
    12 
    ..

这还不错,但可能会更好。有什么我不知道的想法或花哨的功能吗?

4

1 回答 1

2

最简单的方法是将字符串重塑为两列字符矩阵:

Str2 = reshape(Str1, 2, [])';

如果你想用空格分隔八位字节字符串,你可以使用sprintf

Str2 = [sprintf('%c%c ', Str1(1:end - 2)), Str1(end - 1:end)];

sprintf一次读取Str1两个字符,并添加交错空格。由于最后两个字符不需要尾随空格,因此它们分别连接起来。

于 2013-07-18T12:45:17.767 回答