|
本帖最后由 香川群子 于 2015-1-20 23:37 编辑
以及UTF-8码快速转换为字符串的自定义函数(单一功能)。
再次研究了一下UTF码转换规律,发现更简单的算法:
- Function ChrU$(txt$) 'Change UTF To Char
- For i = 1 To Len(txt)
- t = Val("&H" & Mid(txt, i, 2))
- If t < 128 Then ChrU = ChrU & Chr(t): i = i + 1 Else ChrU = ChrU & ChrW(Val("&H" & Mid(txt, i + 1, 1)) * 4096 + (Val("&H" & Mid(txt, i + 2, 2)) - 128) * 64 + Val("&H" & Mid(txt, i + 4, 2)) - 128): i = i + 5
- Next
- End Function
复制代码 复制代码6位16进制转ChrW字符的具体计算过程如下:
t1 = Val("&H" & Mid(txt, i + 1, 1)) '取第1组的第2个16进字符转为10进制数 (第1个设别字符e无需使用)
t2 = Val("&H" & Mid(txt, i + 2, 2)) - 128 '取第2组的2个16进制字符转10进制数并减去128
t3 = Val("&H" & Mid(txt, i + 4, 2)) - 128 '取第3组的2个16进制字符转10进制数并减去128
t4 = t1 * 4096 + t2 * 64 + t3 't1乘以4096+t2乘以64+t3得到该UTF-8码的AscW码值。
t5 = ChrW(t4) 这样就可以用ChrW函数转换为有效字符了。
原问题帖:
http://club.excelhome.net/forum. ... 1181108&pid=8055605
|
|