常用汉字utf-8编码为byte数组的计算过程(asp)

 

常用的汉字占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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值