首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

字符串和十六进制的转换解决办法

2012-01-13 
字符串和十六进制的转换有一文本框TextBox1,我写了如下的字符串和十六进制的转换函数。但是发现如下问题?!P

字符串和十六进制的转换
有一文本框TextBox1,我写了如下的字符串和十六进制的转换函数。
但是发现如下问题?!
        Private   Function   HexDisplayByString(ByVal   sString   As   String)   As   String
                Dim   bText()   As   Byte   =   Encoding.ASCII.GetBytes(sString)
                Dim   sTemp   As   String   =   " "
                For   i   As   Integer   =   0   To   bText.Length   -   1
                        sTemp   +=   String.Format( "{0:X2}   ",   bText(i))
                Next
                Return   sTemp
        End   Function

        Private   Function   StringDisplayByHex(ByVal   sHex   As   String)   As   String
                Dim   bText   As   Byte()
                Dim   sTemp   As   String   =   " "
                Dim   sItems()   As   String   =   (Trim(sHex)).Split( "   "c)

                If   sItems.Length   >   0   Then
                        ReDim   bText(0   To   sItems.Length   -   1)
                        For   i   As   Integer   =   0   To   sItems.Length   -   1
                                If   sItems(i)   <>   " "   Then
                                        bText(i)   =   "&H "   &   sItems(i)
                                        sTemp   +=   Chr(bText(i))
                                        'sTemp   +=   Convert.ToChar(Convert.ToInt32(bText(i),   16))
                                End   If
                        Next
                End   If
                Return   sTemp
        End   Function

当我在TextBox1中输入 "abcd ",
然后执行TextBox1.Text   =   HexDisplayByString(TextBox1.Text)
再执行TextBox1.Text   =   StringDisplayByHex(TextBox1.Text)
就可以还原了。

可是当我在TextBox1中输入 "AA   BB   CC   DD ",
然后执行TextBox1.Text   =   StringDisplayByHex(TextBox1.Text)
再执行TextBox1.Text   =   HexDisplayByString(TextBox1.Text)
居然数据没了,无法还原为 "AA   BB   CC   DD "。



就算是看到乱码,也应该能够还原啊!?
帮忙给看看,给给解决方法?

[解决办法]
别用ASCII编码,用GB2312编码或者是系统默认编码

Private Function HexDisplayByString(ByVal sString As String) As String
Dim bText() As Byte = Encoding.Default.GetBytes(sString)
Dim sTemp As String = " "
For i As Integer = 0 To bText.Length - 1
sTemp += String.Format( "{0:X2} ", bText(i))
Next
Return sTemp
End Function

Private Function StringDisplayByHex(ByVal sHex As String) As String
Dim bText As Byte()
Dim sTemp As String = String.Empty
Dim sItems() As String = (Trim(sHex)).Split( " ")

If sItems.Length > 0 Then
ReDim bText(0 To sItems.Length)
For i As Integer = 0 To sItems.Length - 1
If sItems(i) <> " " Then
bText(i) = "&H " & sItems(i)
End If
Next
sTemp = Encoding.Default.GetString(bText)
End If
Return sTemp
End Function

热点排行