1.编一段小程序,得到所有汉字的内码与Unicode对应表,并按Unicode排序。
2.将对应表读入一数组中,通过查表方式将Unicode变为内码。

解决方案 »

  1.   

    dim kkk() as byte
    kkk = str
    For II = 1 To UBound(kkk) Step 2
    If Len(Hex(kkk(II))) = 1 Then
    s1 = "0" & Hex(kkk(II))
    Else
    s1 = Hex(kkk(II))
    End If
    If Len(Hex(kkk(II - 1))) = 1 Then
    s2 = "0" & Hex(kkk(II - 1))
    Else
    s2 = Hex(kkk(II - 1))
    End If
    str = str & s1 & s2
    Next
      

  2.   

    FreshAir(FreshAir) 朋友,查表法既慢有没有创意,这也是我为什么要来这里提问的原因,我现在就用查表法,可是我认为太差。hiezxy() 朋友,不好意思,我VB不熟悉,kkk = str 是什么意思,直接让
    kkk(0)="54"
    kkk(1)="75"
    了吗?  
    Hex(kkk(II)) 获得"54" 的16进制值吗? &36H  对吗?
    s1+s2 让两个16进制直接相加吗? 在家里看的,没有VB检测,明天到单位去看看。谢谢啦
      

  3.   

    汉字不可能为BA,还是你的MID函数用错拉,汉字的内码是负数所以不可能BA就表示,你的问题我已经解决了,我近来在做通讯,"汉"的内码是BABA,4个BCD码,求校验和的时候要拆分为&HBA+&HBA,我自己做了个函数,先判断是双字节还是单字节,然后拆分双字节相加
      

  4.   

    查表法虽然没有新意,但如果你能结合二分技术或其它快速查找算法的话,
    还是不慢的,事实上,OS内部就在大量使用查表法。    其实,大多数高级语言本身就带有Unicode转换函数,如VB的strConv函数,
    你为什么不用呢?
      

  5.   

    我由于工作需要,必须使用一种叫Nsbasic的类似BASIC的语言,可是它没有strconv ,也没有chrb() ,否则,这一切就不是问题了.我现在使用的是查表法,将一个大表拆成10个小表,再在小表里搜索,一个是占用空间大,另一个是速度并不太快. 所以我想能否根据已知的Unicode码例如"6C49",计算出它对应的GB码"BABA" ,如果可以直接算出来,我想这是最佳解决方法.但是我对Unicode和GBCODE不熟悉,而我知道的转换方法无外乎利用语言提供的函数直接完成,而这对我又是一件不可能的事.  郁闷中.....
      

  6.   

    补充一下,有了 "BABA",我就可以用chr(186)+chr(186)得到汉字"汉"了
      

  7.   

    Dim strArr() As Byte
    dim str as string
    str="中文"
    strArr = StrConv(str, vbFromUnicode) 'Unicode拆成ascii的数组str=StrConv(strArr, vbUnicode)   'Unicode还原然后可以参看Hex()
    ===============================================================
    语法Hex(number)必要的 number 参数为任何有效的数值表达式或字符串表达式。说明如果 number 还不是一个整数,那么在执行前会先被四舍五入成最接近的整数。如果 number 为 所得为 
    Null Null 
    Empty 零 (0) 
    任何其他的数字 最多可到八个十六进制字符。 
    适当范围内的数字,前缀以 &H,可以直接表示十六进制数字。例如,十六进制表示法的 &H10 代表十进制的 16。
      

  8.   

    &H6C49 ---> &HBABA ?