我是用StrConv函数进行转换的,我是先将一个字符串用StrConv(str,vbFromUnicode)转换成数组,然后保存到一个byte数组中,并通过读卡器写入Mifare One芯片。
接下来我又做了一个读卡程序,是用StrConv(buffer,vbUnicode)函数将字节数组转换成一个字符串,但转换的结果不是定入芯片前生成的那个字符串,是一个乱码。这应该怎么解决呀?谢谢参与讨论!

解决方案 »

  1.   

    不知楼主是怎么写的
    下面是我测试的Dim mByte() As Byte     '字节数组
    Dim str As String       '字符串
    str = "中国CSDN"'字符串->字节数组
    mByte = StrConv(str, vbFromUnicode)'字节数组->字符串
    str = StrConv(mByte, vbUnicode)Debug.Print str
      

  2.   

    我的代码和sdfkfkd的一样,在“字符串->字节数组”这个环节是将转换好的数组存入Mifare one卡的一个区中,方法和他的一样,用mByte = StrConv(str, vbFromUnicode);然后读出这个区的数据,再用“字节数组->字符串”中的方法还原回来,str = StrConv(mByte, vbUnicode),但输出的结果与先前写入卡区之前的字符串数据不一致,是乱码的。
      

  3.   

    你读的是哪一个区?第 0 区的数据第 0 数据块是固定数据,当然是乱码。使用 Mifare One 不要采用可打印字符串方式。直接转成 16 进制字符串显示即可。
      

  4.   

    我读的是第一区我自己写入的数据,如果直接mByte = StrConv(str, vbFromUnicode),再str = StrConv(mByte, vbUnicode),转回来的数据没在问题。但就是我一保存到卡中的1区,再str = StrConv(mByte, vbUnicode),就是说只要通过读卡器就不行。高手指点。
      

  5.   


            Dim mByte() As Byte     
            Dim str As String       
            str = "中国CSDN"
            
            '字符串->字节数组
            mByte = str
            
            '字节数组->字符串
            str = mByte
            
            Debug.Print strMSDN有说,在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。