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
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
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即为所求
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
偶试了很多数,结果好像没什么规律?加分,请多位兄弟帮下偶啊!
但是这个函数有危险性。稍微不主意就容易导致copy到错误的地址。
不过总的来说还是很好用的。AND OR XOR是对字符的按位操作。
建议你看看数字逻辑的书,你就明白了。
200=11001000
127=0111111111001000
AND
01111111
-------------
01001000 =72
每个字节八位都用可以用CopyMemory实现,可是不用第八位时怎么用呢?
str(0) and &h7f& 是屏蔽每八位吧??