clow = MidB(binstr,i,1) '判断是否中文的字符 If AscB(clow) > 127 Then 'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转 ccc = ccc & Chr(AscW(MidB(binstr,i + 1,1) & clow)) skipflag = 1 Else ccc = ccc & Chr(AscB(clow)) End If Else skipflag = 0 End If Next End If bin2str = ccc End Function
'把普通字符串转成二进制字符串函数 Function str2bin(varstr) str2bin = "" For i = 1 To Len(varstr) varchar = mid(varstr,i,1) varasc = Asc(varchar) ' asc对中文字符求出来的值可能为负数, ' 加上65536就可求出它的无符号数值 ' -1在机器内是用补码表示的0xffff, ' 其无符号值为65535,65535=-1+65536 ' 其他负数依次类推。 If varasc < 0 Then varasc = varasc + 65535 End If '对中文的处理:把双字节低位和高位分开 If varasc > 255 Then varlow = Left(Hex(Asc(varchar)),2) varhigh = right(Hex(Asc(varchar)),2) str2bin = str2bin & chrB("&H" & varlow) & chrB("&H" & varhigh) Else str2bin = str2bin & chrB(AscB(varchar)) End If Next End Function
'取得文件名(去掉Path) Function GetFileName(FullPath) If FullPath <> "" Then