| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4310 人关注过本帖
标题:[求助]如何将汉字的HEX编码转换回STRING
只看楼主 加入收藏
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
 问题点数:0 回复次数:12 
[求助]如何将汉字的HEX编码转换回STRING
请问我将包含汉字的字符串转换为HEX后,
如何根据HEX转换并出原串?
搜索更多相关主题的帖子: HEX STRING 汉字 编码 
2007-03-15 11:36
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
Chr函数.

我的msn: myfend@
2007-03-15 11:38
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
这是我写的程序.你可以慢慢看看.

Option Explicit

Private Sub Command1_Click()
Dim inputData As String
inputData = InputBox("请输入你的汉字")
Dim hexData As String
hexData = Hex(Asc(inputData))

Print inputData & "的十六进制数是:" & hexData
Print "现在使用十六进制数:" & hexData & "还原成汉字"
Print "你的十六进制数是:" & hexData & ",对应的汉字是:" & Chr(hexToDec(hexData))
End Sub

Private Function hexToDec(inputData As String) As Double
Dim i As Integer
Dim decOut As Double '转换为十进制数最后返回的数
Dim lengthHex As Integer '十六进制数的长度
Dim hexStep As Double
decOut = 0
inputData = UCase(inputData)
lengthHex = Len(inputData) '得到十六进制数的长度

For i = 1 To lengthHex '判断该数是否为16进制数
If IsNumeric(Mid(inputData, i, 1)) Or Mid(inputData, i, 1) = "A" Or Mid(inputData, i, 1) = "B" Or _
Mid(inputData, i, 1) = "C" Or Mid(inputData, i, 1) = "D" Or Mid(inputData, i, 1) = "E" Or _
Mid(inputData, i, 1) = "F" Then
'跳过
Else
MsgBox "不是一个十六进制数"
Exit Function
End If
Next

hexStep = 0
'转换为十进制数
For i = lengthHex To 1 Step -1
hexStep = hexStep * 16
If hexStep = 0 Then
hexStep = 1
End If
If Mid(inputData, i, 1) = "0" Then
decOut = decOut + (0 * hexStep)
ElseIf Mid(inputData, i, 1) = "1" Then
decOut = decOut + (1 * hexStep)
ElseIf Mid(inputData, i, 1) = "2" Then
decOut = decOut + (2 * hexStep)
ElseIf Mid(inputData, i, 1) = "3" Then
decOut = decOut + (3 * hexStep)
ElseIf Mid(inputData, i, 1) = "4" Then
decOut = decOut + (4 * hexStep)
ElseIf Mid(inputData, i, 1) = "5" Then
decOut = decOut + (5 * hexStep)
ElseIf Mid(inputData, i, 1) = "6" Then
decOut = decOut + (6 * hexStep)
ElseIf Mid(inputData, i, 1) = "7" Then
decOut = decOut + (7 * hexStep)
ElseIf Mid(inputData, i, 1) = "8" Then
decOut = decOut + (8 * hexStep)
ElseIf Mid(inputData, i, 1) = "9" Then
decOut = decOut + (9 * hexStep)
ElseIf Mid(inputData, i, 1) = "A" Then
decOut = decOut + (10 * hexStep)
ElseIf Mid(inputData, i, 1) = "B" Then
decOut = decOut + (11 * hexStep)
ElseIf Mid(inputData, i, 1) = "C" Then
decOut = decOut + (12 * hexStep)
ElseIf Mid(inputData, i, 1) = "D" Then
decOut = decOut + (13 * hexStep)
ElseIf Mid(inputData, i, 1) = "E" Then
decOut = decOut + (14 * hexStep)
ElseIf Mid(inputData, i, 1) = "F" Then
decOut = decOut + (15 * hexStep)
End If
Next

hexToDec = decOut
End Function

我的msn: myfend@
2007-03-15 12:06
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
好的,谢谢了先!

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-03-16 09:44
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
你怎么搞起VB了?..

我的msn: myfend@
2007-03-16 09:46
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
没有,VB好多年不用,忘了都.
最近用VB写一个游戏的修改器,需要转换BIG5转换GB显示!
不知道直接从BIG5转到GB内码显示是否会有问题?

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-03-16 09:55
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
要由BIG5转换的.我就不太清楚了.没用过BIG5的编码.

我的msn: myfend@
2007-03-16 09:56
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 

这个简单
'繁体简体转换
'参数sStr为需要转换的文本
'参数iConver为要转化的类型,为1时表示繁体到简体的转换,为2时表示简体到繁体的
'转换

Public Function GBtoBIG5(sStr As String, iConver As Integer) As String
On Error Resume Next
Dim STR
If iConver = 1 Then 'BIG5-->GB
STR = StrConv(sStr, vbFromUnicode, &H804)
GBtoBIG5 = StrConv(STR, vbUnicode, &H404)
ElseIf iConver = 2 Then 'GB-->BIG5
STR = StrConv(sStr, vbFromUnicode, &H404)
GBtoBIG5 = StrConv(STR, vbUnicode, &H804)
End If
End Function


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-03-16 09:59
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
哦,对,使用StrConv就可以.

我的msn: myfend@
2007-03-16 10:02
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
很好用,谢谢了,改改就可以用了,省了不少时间,呵呵!

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2007-03-16 10:29
快速回复:[求助]如何将汉字的HEX编码转换回STRING
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014835 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved