• COPYMEMORY 实现 N维数组向M维数组的转化


    'copymemory可以实现不同维数数组间的转换,如:

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
    Dim a(5, 7) As Byte, b(15, 2) As Byte, c(47) As Byte, d(2, 3, 3) As Byte '定义48个元素的四个数组用于测试
    Sub xxxx()
    Dim i As Integer, j As Integer, k As Integer For i = 0 To 5 '随机定义数组a
    For j = 0 To 7
    a(i, j) = Int(Rnd * 128)
    Next
    Next Debug.Print "array a():" '数组a( 6 行8 列)
    For i = 0 To 5
    For j = 0 To 7
    Debug.Print Right(Space(5) & a(i, j), 5);
    Next
    Debug.Print
    Next
    Debug.Print Debug.Print "array b():" '数组b( 16 行 3 列)
    CopyMemory b(0, 0), a(0, 0), 48
    For i = 0 To 15
    For j = 0 To 2
    Debug.Print Right(Space(5) & b(i, j), 5);
    Next
    Debug.Print
    Next
    Debug.Print
    Debug.Print "array c():" '数组c( 48 行 1 列)
    CopyMemory c(0), b(0, 0), 48
    For i = 0 To 47
    Debug.Print Right(Space(5) & c(i), 5)
    Next
    Debug.Print Debug.Print "array d():" '数组d( 3 行 4 列 4 层)
    CopyMemory d(0, 0, 0), c(0), 48
    For i = 0 To 2
    For j = 0 To 3
    For k = 0 To 3
    Debug.Print Right(Space(5) & d(i, j, k), 5);
    Next
    Debug.Print
    Next
    Debug.Print "---------------------------"
    Next
    End Sub

    返回:

    array a():
       31  125    7   49   46   62   19   60
       32   80   69   20  120   83   64   49
       13  100   58   96   76  106    2   26
        9   13   42   16    0   68   84   69
      105   10   24   86   58   45   19   90
      118   67   11   96   51   59   62   26 array b():
       31   24  106
       32   11   68
       13   49   45
        9   20   59
      105   96   19
      118   16   64
      125   86    2
       80   96   84
      100   46   19
       13  120   62
       10   76   60
       67    0   49
        7   58   26
       69   51   69
       58   62   90
       42   83   26 array c():
       31
       32
       13
        9
      105
      118
      125
       80
      100
       13
       10
       67
        7
       69
       58
       42
       24
       11
       49
       20
       96
       16
       86
       96
       46
      120
       76
        0
       58
       51
       62
       83
      106
       68
       45
       59
       19
       64
        2
       84
       19
       62
       60
       49
       26
       69
       90
       26 array d():
       31    7   46   19
        9   42    0   84
      125   49   62   60
       13   16   68   69
    ---------------------------
       32   69  120   64
      105   24   58   19
       80   20   83   49
       10   86   45   90
    ---------------------------
       13   58   76    2
      118   11   51   62
      100   96  106   26
       67   96   59   26
    ---------------------------
  • 相关阅读:
    我的Firefox
    九成偏股基金净值增长弱于大盘 仅18只跑赢指数
    大事记:
    Symantec AntiVirus企业版(接受管理)客户机端卸载方法
    CDP
    两行代码解决iOS上拉下拉时,底部栏顶部栏跟随手势滚动
    8Windows概要
    4断点和单步执行
    win7下windbg本机内核调试
    windbg技巧看和改标志位创建进程时断下
  • 原文地址:https://www.cnblogs.com/fengju/p/6336349.html
Copyright © 2020-2023  润新知