''''将某位设置为1并返回值
Public Function BitSet32(Number As Long, Bit As Long) As Long
BitSet32 = BitPower(Bit) Or Number
End Function
''''无符号扩展,最好作为内嵌到函数内部,减少调用开支。 注意,它与Clng有本质的区别
Public Function WORD2DWORD(Num As Integer) As Long
WORD2DWORD = Num And &HFFFF&
End Function
''''逻辑右移32位函数
Public Function SHR32(ByRef Num As Long, BitNum As Long) As Long
SHR32 = CallWindowProc(ByVal SHR32Addr, Num, BitNum, 0, 0)
End Function
''''逻辑左移32位函数
Public Function SHL32(ByRef Num As Long, BitNum As Long) As Long
SHL32 = CallWindowProc(ByVal SHL32Addr, Num, BitNum, 0, 0)
End Function
''''没有采用汇编码,如果需要也可以采用,但16位的汇编码较32位的差很多,此函数速度约比SHR32慢一倍左右还可以
Public Function SHR16(ByRef Num As Integer, BitNum As Long) As Integer
Dim mdw As BIT_DWORD
Dim rl As Long
mdw.LoWord = Num
CopyMemory rl, mdw, 4
rl = CallWindowProc(ByVal SHR32Addr, rl, BitNum, 0, 0)
CopyMemory SHR16, rl, 2
End Function
Public Function SHL16(ByRef Num As Integer, BitNum As Long) As Integer
Dim mdw As BIT_DWORD
Dim rl As Long
mdw.LoWord = Num
CopyMemory rl, mdw, 4
rl = CallWindowProc(ByVal SHL32Addr, rl, BitNum, 0, 0)
CopyMemory SHL16, rl, 2
End Function
''''///////////////////////////////////////////////////////////////////////////////////////////
'''' 如果对性能没有太大要求,或没能理解上面的函数的作法,可以用以下几个函数。
'''' 一般不建议使用
Public Function HiByte(ByRef Num As Integer) As Byte
Dim mw As BIT_WORD
CopyMemory mw, Num, 2
HiByte = mw.HiByte
End Function
Public Function LoByte(ByRef Num As Integer) As Byte
CopyMemory LoByte, Num, 1 ''''可以省掉一次取值,
End Function
Public Function HiWord(ByRef Num As Long) As Integer
Dim mdw As BIT_DWORD
CopyMemory mdw, Num, 4
HiWord = mdw.HiWord
End Function
Public Function LoWord(ByRef Num As Long) As Integer
CopyMemory LoWord, Num, 2
End Function
''''比LoWord更快一点的版本(但如果内置于一个大函数内,可能用loword更好,因为代码更清晰)
Public Function LoWordFaster(ByRef Num As Long) As Integer
If (Num And &H8000&) Then '''' dw And &H00008000 来进行确定低位是不是负数
LoWordFaster = Num Or &HFFFF0000
Else
LoWordFaster = Num And &HFFFF& ''''dw And &H0000FFFF
End If
End Function
上一页 [1] [2] [3] [VB.NET程序]GSM短信模块库函数,可以用VB,VC,调用简单实用 [办公软件]PowerPoint做交互课件之弃用VBA [办公软件]VBA获取U盘、主板、CPU序列号和网卡MAC地址 [办公软件]VBA设置文件属性及加密源代码示例 [办公软件]VBA中初始化ADO连接的几种方法 [网络安全]“VB破坏者变种N”病毒摘要 [Web开发]ASP.NET上传文件到数据库VB版 [办公软件]在Excel中利用VBA实现多表单元格数据的读取与赋值… [办公软件]使用Vba读取已关闭的Excel工作薄数据到当前工作表… [办公软件]Excel编程基础之VBA文件操作详解
|