如何创建具有十六进制输入的 4x4 数组?

How to create a 4x4 array with hexadecimal input?

提问人:Anis Zaitunah 提问时间:9/3/2021 最后编辑:WolfieAnis Zaitunah 更新时间:9/3/2021 访问量:154

问:

如何在 matlab 中创建具有十六进制输入的 4x4 数组?

我目前收到此错误:

使用重塑时出错 要重塑元素的数量,则不得更改。

key =

  16×2 char array

    '41'
    '42'
    '43'
    '44'
    '45'
    '46'
    '47'
    '48'
    '49'
    '4A'
    '4B'
    '4C'
    '4D'
    '4E'
    '4F'
    '50'

w = (reshape (key, [4, 4]))';
数组 MATLAB 密码学 十六进制 语法错误

评论


答:

2赞 il_raffa 9/3/2021 #1

MatLab中的十六进制数字实际上是文本字符串。

在您的例子中,您没有 (16 x 1) 数组,而是一个 16 x 2 字符串数组。

通过使用 hex2dec 函数转换十六进制值,您可以获得 4 x 4 的十进制数据数组:

new_key=reshape(hex2dec(key),4,4)

这给出了:

new_key =

   65   69   73   77
   66   70   74   78
   67   71   75   79
   68   72   76   80

你可以通过第一个将输入数组转换为元胞数组来获得一个十六进制数据的 4 x 4 字符串数组:

c_key=cellstr(key)
c_key_1=reshape(c_key,4,4)

这给出了:

c_key_1 =
{
  [1,1] = 41
  [2,1] = 42
  [3,1] = 43
  [4,1] = 44
  [1,2] = 45
  [2,2] = 46
  [3,2] = 47
  [4,2] = 48
  [1,3] = 49
  [2,3] = 4A
  [3,3] = 4B
  [4,3] = 4C
  [1,4] = 4D
  [2,4] = 4E
  [3,4] = 4F
  [4,4] = 50
}

注意:仅使用 Octave 进行测试

评论

1赞 Matteo V 9/3/2021
只是一个小小的更正:OP 的数组是一个 (16 x 2) char 数组,而不是字符串数组。我怀疑如果它是一个字符串数组,重塑会很好,因为它的大小是正确的。