• 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
    ---------------------------
  • 相关阅读:
    C#开发: 通信篇-串口调试助手
    C#开发: 准备工作-C# 新建工程
    C#开发: 准备工作-Visual Studio 安装
    ESP8266 SDK开发: 外设篇-串口
    ESP8266 SDK开发: 外设篇-定时器,延时
    ESP8266 SDK开发: 外设篇-GPIO中断检测
    【java编程】加载Resources配置文件的方法
    【java高级编程】jdk自带事件模型编程接口
    【mybatis源码学习】mybtias知识点
    【java编程-Javassist】秒懂Java动态编程(Javassist研究)
  • 原文地址:https://www.cnblogs.com/fengju/p/6336349.html
Copyright © 2020-2023  润新知