VB中的问题 有两条代码看不懂 有哪位大佬解释一下吗 拜谢
PrivateDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(DestinationAsAny,SourceA...
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Function funLong2Byte(ByVal val As Long)
CopyMemory gbytBinData(0), val, 4
End Function
上面是函数的定义
函数是这样: funLong2Byte (Templong)
这到底是要怎样计算啊
gbytBinData(0)是一个数组的第一位 也就是一个数 展开
Public Function funLong2Byte(ByVal val As Long)
CopyMemory gbytBinData(0), val, 4
End Function
上面是函数的定义
函数是这样: funLong2Byte (Templong)
这到底是要怎样计算啊
gbytBinData(0)是一个数组的第一位 也就是一个数 展开
1个回答
展开全部
这是把一个长整型数(即Long型,长度为4个字节)复制到一个字节数组(Byte型,共4个元素,每个元素1个字节)中。
比如说一个长整型数(为了方便描述用16进制表示,下同)是 &H12345678 ,那么它在内存中排列形式是 78 56 34 12 。而一个字节数组的每个元素在内存中也是按顺序紧密排列的,比如 4个元素且已初始化的字节数组在内存中是这样的 00 00 00 00 。现在,通过API函数CopyMemory把前一个长整型数所在内存地址的值复制到这个字节数组所在的内存地址,也就是说这时候字节数组所在内存的值也变成 78 56 34 12 了,这样的话就相当于:
gbytBinData(0) = &H78
gbytBinData(1) = &H56
gbytBinData(2) = &H34
gbytBinData(3) = &H12
这实际上就是把一个长整型数转化成字节数组的意思。
其实不用API函数用纯VB代码也可以实现的:
Dim Templong As Long, gbytBinData(3) As Byte
Templong = 305419896
gbytBinData(0) = Templong Mod &H100
gbytBinData(1) = Templong \ &H100 Mod &H100
gbytBinData(2) = Templong \ &H10000 Mod &H100
gbytBinData(3) = Templong \ &H1000000 Mod &H100
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询