那位兄弟帮忙把下面代码转成VB的(会C的兄弟帮个忙)

simon__sun 2009-06-17 12:42:30
如题

'//ucCardNum[4]
'//ucKeyFromCardnum[6]
'void KeyForAnyCardMakeOut(const BYTE *ucCardNum,BYTE *ucKeyFromCardnum)
'{
' if(ucCardNum[0] >0x69) ucKeyFromCardnum[0] = (BYTE)(ucCardNum[0]^0x65 + ucCardNum[3]);
' else ucKeyFromCardnum[0] = ucCardNum[3]^((BYTE)(ucCardNum[0]^0xdc + 0xEE ));
' if(ucCardNum[1]%3) ucKeyFromCardnum[1] = (BYTE)(ucCardNum[1]*5 + ucCardNum[2] +0x57);
' else ucKeyFromCardnum[1] = (BYTE)(ucCardNum[0] + ucCardNum[3]*2);
' if(ucCardNum[2] > 0x9F) ucKeyFromCardnum[2] = (BYTE)(((BYTE)(ucCardNum[2]*8)^0x96)*9);
' else ucKeyFromCardnum[2] = (BYTE)(((BYTE)(ucCardNum[2]+123)^0x96)*3);
' if(ucCardNum[3]%4 ) ucKeyFromCardnum[3] = (BYTE)(ucCardNum[3]-44)^0xad;
' else ucKeyFromCardnum[3] = (BYTE)(ucCardNum[3]+8)^0xea;
' if(ucKeyFromCardnum[0] > ucKeyFromCardnum[1])
' {
' ucKeyFromCardnum[4] = ucKeyFromCardnum[0]^((BYTE)(ucKeyFromCardnum[1]+ucKeyFromCardnum[2]));
' }
' Else
' {
' ucKeyFromCardnum[4] = (BYTE)(ucKeyFromCardnum[0]+ucKeyFromCardnum[3]) ^ucKeyFromCardnum[1];
' }
' ucKeyFromCardnum[5] = ucKeyFromCardnum[2]^ucKeyFromCardnum[3]^ucKeyFromCardnum[4];
'}
...全文
23 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyserver 2009-06-17
  • 打赏
  • 举报
回复
Private Declare Function LoByte Lib "TLBINF32" Alias "lobyte" (ByVal Word As Integer) As Byte
Dim ucCardNum(4) As Byte
Dim ucKeyFromCardnum(6) As Byte
Sub main()
KeyForAnyCardMakeOut ucCardNum, ucKeyFromCardnum
End Sub
Sub KeyForAnyCardMakeOut(ucCardNum() As Byte, ucKeyFromCardnum() As Byte)
If (ucCardNum(0) > &H69) Then
ucKeyFromCardnum(0) = LoByte(ucCardNum(0) Xor &H65 + ucCardNum(3))
Else
ucKeyFromCardnum(0) = ucCardNum(3) Xor LoByte(ucCardNum(0) Xor &HDC + &HEE)
End If
If (ucCardNum(1) Mod 3) Then
ucKeyFromCardnum(1) = LoByte(ucCardNum(1) * 5 + ucCardNum(2) + &H57)
Else
ucKeyFromCardnum(1) = LoByte(ucCardNum(0) + ucCardNum(3) * 2)
End If
If (ucCardNum(2) > &H9F) Then
ucKeyFromCardnum(2) = LoByte(((ucCardNum(2) * 8) Xor &H96) * 9)
Else
ucKeyFromCardnum(2) = LoByte(((ucCardNum(2) + 123) Xor &H96) * 3)
End If
If (ucCardNum(3) Mod 4) Then
ucKeyFromCardnum(3) = LoByte(ucCardNum(3) - 44) Xor &HAD
Else
ucKeyFromCardnum(3) = LoByte(ucCardNum(3) + 8) Xor &HEA
End If
If (ucKeyFromCardnum(0) > ucKeyFromCardnum(1)) Then
ucKeyFromCardnum(4) = ucKeyFromCardnum(0) Xor LoByte(ucKeyFromCardnum(1) + ucKeyFromCardnum(2))
Else
ucKeyFromCardnum(4) = LoByte(ucKeyFromCardnum(0) + ucKeyFromCardnum(3)) Xor ucKeyFromCardnum(1)
End If
ucKeyFromCardnum(5) = ucKeyFromCardnum(2) Xor ucKeyFromCardnum(3) Xor ucKeyFromCardnum(4)
End Sub
注意,没有使用CByte,因为此函数会溢出。
simon__sun 2009-06-17
  • 打赏
  • 举报
回复
2楼的通不过哦,(byte)怎么转到VB?
Kimm2009 2009-06-17
  • 打赏
  • 举报
回复
#2楼的可以,问题不大,不知道编译通过没。
booksoon 2009-06-17
  • 打赏
  • 举报
回复
dim ucCardNum(4) as byte
dim ucKeyFromCardnum(6) as byte
public sub KeyForAnyCardMakeOut(ucCardNum() as byte,ucKeyFromCardnum() as byte)
if(ucCardNum(0) >&H69) then
ucKeyFromCardnum(0) = (BYTE)(ucCardNum(0)&H65 + ucCardNum(3))
else
ucKeyFromCardnum(0) = ucCardNum(3) XOR ((BYTE)(ucCardNum(0) XOR &Hdc + &HEE ))
end if
if(ucCardNum(1) mod 3>=1) then
ucKeyFromCardnum(1) = (BYTE)(ucCardNum(1)*5 + ucCardNum(2) +&H57)
else
ucKeyFromCardnum(1) = (BYTE)(ucCardNum(0) + ucCardNum(3)*2)
end if
if(ucCardNum(2) > &H9F) then
ucKeyFromCardnum(2) = (BYTE)(((BYTE)(ucCardNum(2)*8) XOR &H96)*9)
else
ucKeyFromCardnum(2) = (BYTE)(((BYTE)(ucCardNum(2)+123) XOR &H96)*3)
end if
if(ucCardNum(3) mod 4>=1 ) then
ucKeyFromCardnum(3) = (BYTE)(ucCardNum(3)-44) XOR &Had
else
ucKeyFromCardnum(3) = (BYTE)(ucCardNum(3)+8) XOR &Hea
end if
if(ucKeyFromCardnum(0) > ucKeyFromCardnum(1)) then
ucKeyFromCardnum(4) = ucKeyFromCardnum(0) XOR ((BYTE)(ucKeyFromCardnum(1)+ucKeyFromCardnum(2)))
Else
ucKeyFromCardnum(4) = (BYTE)(ucKeyFromCardnum(0)+ucKeyFromCardnum(3)) XOR ucKeyFromCardnum(1)
end if
ucKeyFromCardnum(5) = ucKeyFromCardnum(2) XOR ucKeyFromCardnum(3) XOR ucKeyFromCardnum(4)
end sub
simon__sun 2009-06-17
  • 打赏
  • 举报
回复
自己顶一下

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧