常用的汉字占3个字节,比如 中
普通的转法得出的结果是:[228,184,173],但这个是不对的
t = "中"
Hunicode = replace((Tounicode(t)),"\u","") '中文转二进制,先转unicode 得出:4E2D
这里用到一个大神的进制转换函数:
Function base_convert(number, frombase, tobase)
'Author: Demon
'Date: 2011/12/17
'Website:
Dim digits, num, ptr, i, n, c
digits = "0123456789abcdefghijklmnopqrstuvwxyz"
If frombase < 2 Or frombase > 36 Then
Err.Raise vbObjectError + 7575,,"Invalid from base"
End If
If tobase < 2 Or tobase > 36 Then
Err.Raise vbObjectError + 7575,,"Invalid to base"
End If
number = CStr(number) : n = Len(number)
For i = 1 To n
c = Mid(number, i, 1)
If c >= "0" And c <= "9" Then
c = c - "0"
ElseIf c >= "A" And c <= "Z" Then
c = Asc(c) - Asc("A") + 10
ElseIf c >= "a" And c <= "z" Then
c = Asc(c) - Asc("a") + 10
Else
c = frombase
End If
If c < frombase Then
num = num * frombase + c
End If
Next
Do
ptr = ptr & Mid(digits, (num Mod tobase + 1), 1)
num = num \ tobase
Loop While num
base_convert = StrReverse(ptr)
End Function
把中文转成3个字节的二进制。得出:
11100100 10111000 10101101
然后取反,去掉高位,转10进制+1
比如 11100100 == 》 00011011 ==》 0011011