注册 登录
编程论坛 VB6论坛

变量s中的0-9为什么没有被替换,如何改?

yuma 发布于 2021-08-26 21:20, 1489 次点击
变量s中的0-9为什么没有被替换,如何改?

程序代码:
Private Sub Form_Load()
Dim s As String
s = "73203d2022d6d0bbaac"
For i = 1 To Len(s)
a = Mid(s, i, 1)
a = Replace(a, "0", "f")
a = Replace(a, "1", "e")
a = Replace(a, "2", "d")
a = Replace(a, "3", "c")
a = Replace(a, "4", "b")
a = Replace(a, "5", "a")
a = Replace(a, "6", "9")
a = Replace(a, "7", "8")
a = Replace(a, "8", "7")
a = Replace(a, "9", "6")
a = Replace(a, "a", "5")
a = Replace(a, "b", "4")
a = Replace(a, "c", "3")
a = Replace(a, "d", "2")
a = Replace(a, "e", "1")
a = Replace(a, "f", "0")
b = b & a
Next
Debug.Print b
End Sub
4 回复
#2
风吹过b2021-08-26 22:29
a = Replace(a, "0", "f")
0变成了f
然后最后
a = Replace(a, "f", "0")
f又变成了0了,包括原来的f都变成了0
最终,0 还是 零,f变成了0
所以,最终是 0-7没变,8-f都变了。

----------------------------
换的过程应该是,每二个一组交换,交换需要引入新的字符
程序代码:
'---0 f ----
a = Replace(a, "0", "s")
a = Replace(a, "f", "0")
a = Replace(a, "s", "f")
'---1 e ----
a = Replace(a, "1", "s")
a = Replace(a, "e", "1")
a = Replace(a, "s", "e")
........




#3
yuma2021-08-27 06:16
s = "73203d2022d6d0bbaac"
For i = 1 To Len(s)
a = Mid(s, i, 1)
If a = "0" Then b = "f"
If a = "1" Then b = "e"
If a = "2" Then b = "d"
If a = "3" Then b = "c"
If a = "4" Then b = "b"
If a = "5" Then b = "a"
If a = "6" Then b = "9"
If a = "7" Then b = "8"
If a = "8" Then b = "7"
If a = "9" Then b = "6"
If a = "a" Then b = "5"
If a = "b" Then b = "4"
If a = "c" Then b = "3"
If a = "d" Then b = "2"
If a = "e" Then b = "1"
If a = "f" Then b = "0"
c = c & b
Next
MsgBox c

[此贴子已经被作者于2021-11-29 13:43编辑过]

#4
cwa99582021-08-30 08:38
用select case语句会好看点。
#5
apull2021-08-30 10:16
程序代码:

Private Sub Form_Load()
    Dim s As String
    s = "73203d2022d6d0bbaac"
    For i = 1 To Len(s)
        a = Mid(s, i, 1)
        If (a >= "0" And a <= "5") Then
            a = Chr(Asc("f") - (Asc(a) - Asc("0")))
        ElseIf (a >= "6" And a <= "9") Then
            a = Chr(Asc("9") - (Asc(a) - Asc("6")))
        ElseIf (a >= "a" And a <= "f") Then
            a = Chr(Asc("5") - (Asc(a) - Asc("a")))
        End If
        b = b & a
    Next
    Debug.Print b
End Sub
1