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

来源:互联网 发布:mac用户名是什么 编辑:程序博客网 时间:2024/06/07 01:15

'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
---------------------------