'K进制数据转到N进制
Private Function KTON(data,k,n)
Dim a(100),strTemp,strData,i,j,strDec,strReturn
'N进制转成十进制
strData = Trim(data)
For i=1 TO Len(strData)
strTemp = Mid(strData,Len(strData)-i+1,1)
If (strTemp<="9") And (strTemp>="0") Then
a(i)=Asc(strTemp)-48
End If
If (Ucase(strTemp)<="F") And (Ucase(strTemp)>="A") Then
a(i) = Asc(Ucase(strTemp))-55
End If
strDec = strDec + a(i) * k^(i-1)
Next
'十进制转成N进制
If n = 10 Then
KTON = strDec
Exit Function
End If
i = 0
Do
i = i + 1
a(i) = strDec Mod n
strDec = strDec \ n
Loop While(strDec<>0)
For j=i To 1 step -1
If a(j)>9 Then
strReturn = strReturn & Chr(a(j)+55)
Else
strReturn = strReturn & a(j)
End If
Next
Erase a
KTON = strReturn
End Function
'位操作函数
'a_strBinary:源字符串
'a_strType :操作类型,如与、或、异或、左移、右移、反
'a_intNum :操作数,只能整型
Private Function BitOperate(a_strBinary,a_intType,a_intNum)
Dim strReturn,strBinNum,i,intNumLen,intLen,strBinary
Select Case a_intType
Case SW_conBitAnd '与
If intLen>intNumLen Then
For i = 1 to intLen-intNumLen
strBinNum = "0" & strBinNum
Next
End If
For i = 1 To intLen
strReturn = strReturn & CStr(CInt(Mid(strBinary,i,1)) AND CInt(Mid(strBinNum,i,1)))
Next
Case SW_conBitShl '左移
For i = 1 to a_intNum
strReturn = strReturn & "0"
Next
If intLen>a_intNum Then strReturn = Right(strBinary,intLen-a_intNum) & strReturn
Case SW_conBitShr '右移
For i = 1 to a_intNum
strReturn = strReturn & "0"
Next
If intLen>a_intNum Then strReturn = strReturn & Left(strBinary,intLen-a_intNum)
End Select
你可以参考一下MD5算法中的位运算,应该是可以的,看你想怎么做了,比如里面有这么一句
If lX4 And lY4 Then
lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
ElseIf lX4 Or lY4 Then
If lResult And &H40000000 Then
lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
Else
lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
End If
Else
lResult = lResult Xor lX8 Xor lY8
End If