汉字及字母、数字等混合字符与16进制互相转换
近期在制作一个字符-> 16进制,16进制-> 字符 的转换中遇到点问题,请各位给帮个忙。
在字符转换16进制时没有什么问题,以下是字符-> 16进制的代码
Private Function StringToHex(ByVal MyString As String)
Dim StrAscii As String = " "
Dim ascii As Encoding = Encoding.ASCII
Dim tmpUnicode As Encoding = Encoding.Unicode
Dim unicodeBytes As Byte() = tmpUnicode.GetBytes(MyString)
Dim i As Integer
For i = 0 To UBound(unicodeBytes) - 1
StrAscii &= unicodeBytes(i)
Next
StringToHex1 = StrAscii
End Function
但是在16进制转换字符时遇到汉字和字母混合时转换出来的是乱码,在CSDN搜索了一下,找到一段jadeluo(秀峰)发的代码,可以转换汉字,但遇到半角字符时会转没了
如:16进制码:B2 E2 CA D4 D7 AA BB BB 61(应为:测试转换a),转换后就成了:测试转换,后面的那个a没了。
以下是jadeluo(秀峰)的这段代码:
Function HexToGB(ByVal sHex As String) As String
Dim sResult As String
Dim iLoop As Integer
sResult = " "
For iLoop = 1 To Len(sHex) \ 4
sResult = sResult + Chr(Val( "&H " + Mid(sHex, iLoop * 4 - 3, 4)))
Next iLoop
HexToGB = sResult
End Function
静请各位高人指点迷津!!!!
[解决办法]
沙发,帮你顶
[解决办法]
最后一个是Asicc字符,它好像是2位十六进制一读取,就读不到了。
[解决办法]
jadeluo(秀峰)发的代码 以4位为一个循环,多出不管,后面那个a只有2位来表示,当然会没有!
要是这个a放到中间,还会出现乱码的.
这段代码只适合纯中文的处理,你必须继续完善才行.
[解决办法]
-_-#,有一行代码的位置不是换一下的好
Public Shared Function GetChsFromHex(ByVal hex As String) As String hex = hex.Replace(" ", "") If hex Is Nothing Then Throw New ArgumentNullException("hex") End If If hex.Length Mod 2 < > 0 Then Throw New ArgumentException("输入字符串无效!", "hex") End If Dim bytes As Byte() = New Byte(hex.Length / 2 - 1) {} For i As Integer = 0 To bytes.Length - 1 Try bytes(i) = Byte.Parse(hex.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber) Catch Throw New ArgumentException("输入字符串无效!", "hex") End Try Next Dim chs As System.Text.Encoding = System.Text.Encoding.GetEncoding("gb2312") Return chs.GetString(bytes) End Function