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)是一个数组的第一位 也就是一个数
展开
 我来答
网海1书生
科技发烧友

2018-04-27 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

这是把一个长整型数(即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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式