|
不错的主要用于加密的vbs(asp)位移运算类
<script language="vbscript"> ' Aother: 奔腾的心 ' QQ: 7180001 ' Date: 2008-01-17
Class mShift
Private m_lPower2(31)
Public Function RShift(ByVal lThis, ByVal lBits) On Error Resume Next Init If (lBits <= 0) Then RShift = lThis ElseIf (lBits > 63) Then ' .. error ... ElseIf (lBits > 31) Then RShift = 0 Else If (lThis And m_lPower2(31 - lBits)) = m_lPower2(31 - lBits) Then RShift = (lThis And (m_lPower2(31 - lBits) - 1)) * m_lPower2(lBits) Or m_lPower2(31) Else RShift = (lThis And (m_lPower2(31 - lBits) - 1)) * m_lPower2(lBits) End If End If End Function
Public Function LShift(ByVal lThis, ByVal lBits) On Error Resume Next Init If (lBits <= 0) Then LShift = lThis ElseIf (lBits > 63) Then ' ... error ... ElseIf (lBits > 31) Then LShift = 0 Else If (lThis And m_lPower2(31)) = m_lPower2(31) Then LShift = (lThis And &H7FFFFFFF) \ m_lPower2(lBits) Or m_lPower2(31 - lBits) Else LShift = lThis \ m_lPower2(lBits) End If End If End Function
Private Sub Init() On Error Resume Next m_lPower2(0) = &H1& m_lPower2(1) = &H2& m_lPower2(2) = &H4& m_lPower2(3) = &H8& m_lPower2(4) = &H10& m_lPower2(5) = &H20& m_lPower2(6) = &H40& m_lPower2(7) = &H80& m_lPower2(8) = &H100& m_lPower2(9) = &H200& m_lPower2(10) = &H400& m_lPower2(11) = &H800& m_lPower2(12) = &H1000& m_lPower2(13) = &H2000& m_lPower2(14) = &H4000& m_lPower2(15) = &H8000& m_lPower2(16) = &H10000 m_lPower2(17) = &H20000 m_lPower2(18) = &H40000 m_lPower2(19) = &H80000 m_lPower2(20) = &H100000 m_lPower2(21) = &H200000 m_lPower2(22) = &H400000 m_lPower2(23) = &H800000 m_lPower2(24) = &H1000000 m_lPower2(25) = &H2000000 m_lPower2(26) = &H4000000 m_lPower2(27) = &H8000000 m_lPower2(28) = &H10000000 m_lPower2(29) = &H20000000 m_lPower2(30) = &H40000000 m_lPower2(31) = &H80000000 End Sub
End Class
Dim sft Set sft = New mShift MsgBox sft.RShift(200, 4) MsgBox sft.LShift(200, 4) Set sft = Nothing </script>
<script language="javascript"> alert(200<<4); alert(200>>4); </script> |
|