[vb.net]关于两个相同字符串对比的问题,结果总是不相等。

时间:2021-12-17 13:08:01
[vb.net]关于两个相同字符串对比的问题,结果总是不相等。如图,两个变量需要对比,一个是MD52,一个是read1,都是string,所包含字符串输出看起来也是相同的,但是使用了几种方法进行对比,返回结果就是两个值不相等,求解。

11 个解决方案

#1


你把两个字符串的值贴出来看看

#2


引用 1 楼 Chinajiyong 的回复:
你把两个字符串的值贴出来看看
这俩值是取自不同位置,是两个变量

#3


引用 1 楼 Chinajiyong 的回复:
你把两个字符串的值贴出来看看
其中前一个是计算得来的,后一个用同样算法记录在文件得来的

#4



引用 2 楼 dyc136mm 的回复:
Quote: 引用 1 楼 Chinajiyong 的回复:

你把两个字符串的值贴出来看看
这俩值是取自不同位置,是两个变量

你调试看看两个变量的值 啊,首先比较一下两个字符串的长度看看是否相等

#5


Imports System.Text.Encoding

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MD52 As String = "D41D8CD98F00B204E9800998ECF8427E" & vbNullChar
        Dim read1 As String = "D41D8CD98F00B204E9800998ECF8427E"
        '这两个值“看起来”一样'
        MsgBox(MD52)
        MsgBox(read1)
        '用下面的方式可以进行区别'
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(MD52)))
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(read1)))
    End Sub

End Class

44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45-00
44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45

#6


引用 5 楼 Tiger_Zhao 的回复:
Imports System.Text.Encoding

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MD52 As String = "D41D8CD98F00B204E9800998ECF8427E" & vbNullChar
        Dim read1 As String = "D41D8CD98F00B204E9800998ECF8427E"
        '这两个值“看起来”一样'
        MsgBox(MD52)
        MsgBox(read1)
        '用下面的方式可以进行区别'
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(MD52)))
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(read1)))
    End Sub

End Class

44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45-00
44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45

用你的方式看了一下确实不一样,请问这该怎么处理?

#7


[vb.net]关于两个相同字符串对比的问题,结果总是不相等。这是我查看,后面那行数据是我从文本里读取的

#8


貌似是在文本里加了回车?

#9


文件中有些不可见字符

#10


引用 6 楼 dyc136mm 的回复:
请问这该怎么处理? 

反正 MD5 是定长的,直接截断,简单粗暴。
        MD52 = MD52.Trim().Substring(0, 32).ToUpper
        read1 = read1.Trim().Substring(0, 32).ToUpper
        If MD52 = read1 Then
            MsgBox("ok")
        End If

#11


引用 10 楼 Tiger_Zhao 的回复:
[Quote=引用 6 楼 dyc136mm 的回复:]请问这该怎么处理? 

反正 MD5 是定长的,直接截断,简单粗暴。
        MD52 = MD52.Trim().Substring(0, 32).ToUpper
        read1 = read1.Trim().Substring(0, 32).ToUpper
        If MD52 = read1 Then
            MsgBox("ok")
        End If
[vb.net]关于两个相同字符串对比的问题,结果总是不相等。[vb.net]关于两个相同字符串对比的问题,结果总是不相等。[vb.net]关于两个相同字符串对比的问题,结果总是不相等。

#1


你把两个字符串的值贴出来看看

#2


引用 1 楼 Chinajiyong 的回复:
你把两个字符串的值贴出来看看
这俩值是取自不同位置,是两个变量

#3


引用 1 楼 Chinajiyong 的回复:
你把两个字符串的值贴出来看看
其中前一个是计算得来的,后一个用同样算法记录在文件得来的

#4



引用 2 楼 dyc136mm 的回复:
Quote: 引用 1 楼 Chinajiyong 的回复:

你把两个字符串的值贴出来看看
这俩值是取自不同位置,是两个变量

你调试看看两个变量的值 啊,首先比较一下两个字符串的长度看看是否相等

#5


Imports System.Text.Encoding

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MD52 As String = "D41D8CD98F00B204E9800998ECF8427E" & vbNullChar
        Dim read1 As String = "D41D8CD98F00B204E9800998ECF8427E"
        '这两个值“看起来”一样'
        MsgBox(MD52)
        MsgBox(read1)
        '用下面的方式可以进行区别'
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(MD52)))
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(read1)))
    End Sub

End Class

44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45-00
44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45

#6


引用 5 楼 Tiger_Zhao 的回复:
Imports System.Text.Encoding

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim MD52 As String = "D41D8CD98F00B204E9800998ECF8427E" & vbNullChar
        Dim read1 As String = "D41D8CD98F00B204E9800998ECF8427E"
        '这两个值“看起来”一样'
        MsgBox(MD52)
        MsgBox(read1)
        '用下面的方式可以进行区别'
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(MD52)))
        Debug.Print(BitConverter.ToString(ASCII.GetBytes(read1)))
    End Sub

End Class

44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45-00
44-34-31-44-38-43-44-39-38-46-30-30-42-32-30-34-45-39-38-30-30-39-39-38-45-43-46-38-34-32-37-45

用你的方式看了一下确实不一样,请问这该怎么处理?

#7


[vb.net]关于两个相同字符串对比的问题,结果总是不相等。这是我查看,后面那行数据是我从文本里读取的

#8


貌似是在文本里加了回车?

#9


文件中有些不可见字符

#10


引用 6 楼 dyc136mm 的回复:
请问这该怎么处理? 

反正 MD5 是定长的,直接截断,简单粗暴。
        MD52 = MD52.Trim().Substring(0, 32).ToUpper
        read1 = read1.Trim().Substring(0, 32).ToUpper
        If MD52 = read1 Then
            MsgBox("ok")
        End If

#11


引用 10 楼 Tiger_Zhao 的回复:
[Quote=引用 6 楼 dyc136mm 的回复:]请问这该怎么处理? 

反正 MD5 是定长的,直接截断,简单粗暴。
        MD52 = MD52.Trim().Substring(0, 32).ToUpper
        read1 = read1.Trim().Substring(0, 32).ToUpper
        If MD52 = read1 Then
            MsgBox("ok")
        End If
[vb.net]关于两个相同字符串对比的问题,结果总是不相等。[vb.net]关于两个相同字符串对比的问题,结果总是不相等。[vb.net]关于两个相同字符串对比的问题,结果总是不相等。