rt

解决方案 »

  1.   

    有必要,,我用的eVB做WinCE应用程序,,,eVB不支持StrConv函数,,,很急啊,,,
      

  2.   

    比方说,,“冀”ASCII(十六进制)是BCBD,UNICODE(十六进制)值为5081,,问,怎么通过BCBD计算出5180
      

  3.   

    啊,这么回事啊,应该能找到的,UP ,eVB估计有其他的函数和方法,在找找。
      

  4.   

    如果真的要自己做的话这有资料
    http://www-900.ibm.com/developerWorks/cn/theme/unicode.shtml
      

  5.   

    找到一个API:MultiByteToWideChar,,,,在vb下怎么声明,,怎么用,,???
      

  6.   

    看一下,他们的转换关系
    BCBD,UNICODE(十六进制)值为5081
    1011110010111101
    BCBD
    0101000010000001
    5081看看unicode的说明把
      

  7.   

    MultiByteToWideChar对就是用这个api
      

  8.   

    你是wince的对吗?我先问你你字库使用什么的!gb2312和unicode的字模顺序是不一样的!
    我后面跟贴!
      

  9.   

    ChrW()和AscW(),这个evb应该支持吧
      

  10.   

    Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long具体参数说明msdn上讲得很清楚。
      

  11.   

    http://expert.csdn.net/Expert/topic/2110/2110002.xml
      

  12.   

    MultiByteToWideChar 我试了试,好像不行,,我把我得问题再详细说一下,,我做WinCE终端,服务器向我发数据(ASCII),我一个一个字节的收,这样,数字和字符都没问题(因为它们的ASCII和UNICODE一样),,但汉字就有麻烦了,,比方说,“冀”我收到的是 &HBC,,,,&HBD,,,,终端是将收到的字符串累加,但是&HBC+&HBD 并不等于“冀”,我只能通过&HBC,&HBD想办法转换成“冀”的UNICODE值,,然后ChrW()就能得出 “冀”,,,现在,我苦于找不到将ASCII值转换成UNICODE值的方法,,,,各位,有什么好的主意??
      

  13.   

    '要用到 API, MultiByteToWideChar 和 lstrlenA
    Declare Function MultiByteToWideChar Lib "kernel32" Alias "MultiByteToWideChar" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
    Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As Longunction ConvToUnicode(str() As Byte) As String
      Const CP_ACP = 0&
      Dim lenstr As Long
      lenstr = lstrlenA(VarPtr(str(0))) + 2&         '获得原始字符串长度
      ConvToUnicode = String$(lenstr, vbNullChar)    '分配足够大小的内存
      lenstr = MultiByteToWideChar(CP_ACP, 0&, VarPtr(str(0)), -1&, StrPtr(ConvToUnicode), lenstr) '转换
      ConvToUnicode = Left$(ConvToUnicode, lenstr - 1&) '去处多余字符
    End Function
    ‘==============================to James0001(See-Plus-Plus) :
         那个帖子我看了,,不错,,我在VB下试了试,,Very Good,,正是我想要的,,但是,,eVB下不行啊,,eVB 没有 VarPtr(),,,没有StrPtr,不认0&,还是搞不定啊!而且,,函数不允许 str() 这样的参数 555555555
      

  14.   

    Dim a(1) As Byte
        Dim str As String
        Dim iResult As Long
        Dim tempstr As String
        
        
        Dim ddd As String
        
        a(0) = &HBC
        a(1) = &HBD
        
        str = ChrW(a(0)) + ChrW(a(1))
        Result = MultiByteToWideChar(936, 0, str, 2, tempstr, 2)
        
    ===================================================为何不行啊,参数应该怎样给啊
      

  15.   

    '对不起,我不太了解 eVB。希望这个能帮助你:Declare Function lstrcpynA Lib "kernel32" (ByVal lpString1 As String, lpString2 As Byte, ByVal iMaxLength As Long) As Long'str = 第一个ASCII字符,如: a(0) ; slen = ASCII字符串长度,如: UBound(a)-LBound(a)+1
    Function ConvToUnicode(str As Byte, ByVal slen As Long) As String
      If slen Then
        ConvToUnicode = String$(slen, vbNullChar)
        lstrcpynA ConvToUnicode, str, slen + 1&
      End If
    End Function
      

  16.   

    Private Sub Command1_Click()
        Debug.Print Hex(AscW("冀")) '&H5180
        Debug.Print ChrW(&H5180)    '冀
        
        Debug.Print Hex(Asc("冀"))  '&HBCBD
        Debug.Print Chr(&HBCBD)     '冀
        
        Debug.Print Hex(AscW(Chr(&HBCBD)))  '&H5180
    End Sub
      

  17.   

    谢谢楼上热心的两位哥们,你们的方法在VB中应该没问题,
    to James0001(See-Plus-Plus):eVB中没有lstrcpynA 这个API。
    to  junwhj(junwhj.myrice.com) :eVB中 Chr = ChrW
    再次谢谢两位哥们!!
      

  18.   

    这个问题已经搞定,MultiByteToWideChar的用法真怪!!想知道他怎么用嘛??email我![email protected]揭帖!!