求vb 关于unicode十六进制和汉字互换解释
菜鸟求助高手指点下我
--------------------
我是初学者,麻烦高手尽量提供下源码以供参考。
比如:我的窗体中有3个text,(text1。text2,text3).
在text1里面输入汉字,那么text3中出现相对应的unicode十六进制的编码,我在text2中输入十六进制编码,在text3中出现对应的汉字。
例如:我在text1中输入一个”王“,那么text3中出现的是”738B“,
我在text2中输入”738B“,那么text3中出现的是”王“
-----------------------------
下面是我弄的代码。
Dim txt1 As String
Dim txt2 As String
Dim txt3 As String
Private Sub Text1_Change()
txt1 = Text1.Text
txt3 = StrConv(txt1, vbFromUnicode)
txt2 = StrConv(txt1, vbUnicode)
Text2.Text = txt3
Text3.Text = txt2
End Sub
----------------------------------------
不知道为什么转换过来都是乱码了,不解,因为我初学编程,也是初学vb。麻烦告诉告诉我下。
[解决办法]
函数用得不对,而且还要进行进制转换:
- VB code
Dim txt1 As StringDim txt2 As StringDim txt3 As StringPrivate Sub Text1_Change()txt1 = Text1.Texttxt3 = DEC_to_HEX(AscW(txt1))Text3.Text = txt3End SubPrivate Sub Text2_Change()txt2 = Text2.Texttxt3 = ChrW(HEX_to_DEC(txt2))Text3.Text = txt3End Sub' 用途:将十六进制转化为十进制' 输入:Hex(十六进制数)' 输入数据类型:String' 输出:HEX_to_DEC(十进制数)' 输出数据类型:Long' 输入的最大数为7FFFFFFF,输出的最大数为2147483647Public Function HEX_to_DEC(ByVal Hex As String) As Long Dim i As Long Dim B As Long Hex = UCase(Hex) For i = 1 To Len(Hex) Select Case Mid(Hex, Len(Hex) - i + 1, 1) Case "0": B = B + 16 ^ (i - 1) * 0 Case "1": B = B + 16 ^ (i - 1) * 1 Case "2": B = B + 16 ^ (i - 1) * 2 Case "3": B = B + 16 ^ (i - 1) * 3 Case "4": B = B + 16 ^ (i - 1) * 4 Case "5": B = B + 16 ^ (i - 1) * 5 Case "6": B = B + 16 ^ (i - 1) * 6 Case "7": B = B + 16 ^ (i - 1) * 7 Case "8": B = B + 16 ^ (i - 1) * 8 Case "9": B = B + 16 ^ (i - 1) * 9 Case "A": B = B + 16 ^ (i - 1) * 10 Case "B": B = B + 16 ^ (i - 1) * 11 Case "C": B = B + 16 ^ (i - 1) * 12 Case "D": B = B + 16 ^ (i - 1) * 13 Case "E": B = B + 16 ^ (i - 1) * 14 Case "F": B = B + 16 ^ (i - 1) * 15 End Select Next i HEX_to_DEC = BEnd Function' 用途:将十进制转化为十六进制' 输入:Dec(十进制数)' 输入数据类型:Long' 输出:DEC_to_HEX(十六进制数)' 输出数据类型:String' 输入的最大数为2147483647,输出最大数为7FFFFFFFPublic Function DEC_to_HEX(Dec As Long) As String Dim a As String DEC_to_HEX = "" Do While Dec > 0 a = CStr(Dec Mod 16) Select Case a Case "10": a = "A" Case "11": a = "B" Case "12": a = "C" Case "13": a = "D" Case "14": a = "E" Case "15": a = "F" End Select DEC_to_HEX = a & DEC_to_HEX Dec = Dec \ 16 LoopEnd Function