Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
    Dim i As Long
    Dim mybyte(3) As Byte
    i = 23456
    CopyMemory mybyte(0), i, 4
    Dim j As Long
    For j = 0 To 3
        Debug.Print mybyte(j)
    Next
End Sub

解决方案 »

  1.   

    如果需要倒序排列:
    Option Explicit
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
        Dim i As Long
        Dim mybyte(3) As Byte
        i = 23456
        CopyMemory mybyte(0), i, 4
        Dim mystr(3) As Byte
        Dim j As Long
        For j = 0 To 3
            Debug.Print mybyte(j)
            mystr(3 - i) = mybyte(i)
        NextEnd Sub
    mystr即为所求
      

  2.   

    Private Sub setSize(b() As Byte, ByVal lStart As Long, ByVal lSize As Long)
       b(lStart + 3) = lSize And &HFF
       b(lStart + 2) = (lSize And &HFF00) \ &H100&
       b(lStart + 1) = (lSize And &HFF0000) \ &H10000
       b(lStart) = (lSize And &H7FFFFFFF) \ &H1000000
       If (lSize And &H80000000) = &H80000000 Then
          b(lStart) = b(lStart) Or &H80
       End If
    End Sub
    偶通过这样也能实现rainstormmaster(rainstormmaster)那样,可是觉得都太烦麻了,应该有更简单的办法,而且数字太大时会溢出。问多一个问题:
    VB的
    AND OR XOR运算是怎么实现的?
    200 and 127==72
    偶试了很多数,结果好像没什么规律?加分,请多位兄弟帮下偶啊!
      

  3.   

    copymemory一般在VC中使用的比较多,是低端的API
    但是这个函数有危险性。稍微不主意就容易导致copy到错误的地址。
    不过总的来说还是很好用的。AND OR XOR是对字符的按位操作。
    建议你看看数字逻辑的书,你就明白了。
      

  4.   

    先转换成2进制,再进行运算,例如:
    200=11001000
    127=0111111111001000
    AND
    01111111
    -------------
    01001000 =72
      

  5.   

    帮解决第一个问题啊!
    每个字节八位都用可以用CopyMemory实现,可是不用第八位时怎么用呢?
    str(0) and &h7f& 是屏蔽每八位吧??