怎么对2个字符串进行异或?

解决方案 »

  1.   

    字符串可以异或吗?
    if string1<>string2 then
     .......
    else
    .......
    end if 
      

  2.   

    lnhsgj(黑鹰) 
    ??????
    delphi中处理是没问题的
      

  3.   

    你需要把字符串转成字节串再进行异或,因为这样异或的结果肯定是有不可见的字符出现,所以不能再用字符串的方式存放。而且VB中的String是使用Unicode存放的(VB 6以后都是Unicode)。dim bySrc1() as byte, bySrc2() as byte , byTar() as byte
    dim sStr1 as string, sStr2 as string
    dim iLen1 as integer, iLen2 as integer , iLen3 as integer
    sStr1="source string 1"
    sStr2="SOURCE STRING 2"bySrc1 = strconv( sStr1, vbfromunicode );
    bySrc2 = strconv( sStr2, vbfromunicode );iLen1 = ubound(iLen1)
    iLen2 = ubound(iLen2)
    iLen3 = iif ( iLen1>iLen2, iLen1, iLen2 )redim byTar(0 to iLen3-1) as bytefor iCounter=0 to iLen3
        if ( iCounter>iLen1 )
            byTar(iCounter) = bySrc2(iCounter)
        else if ( iCounter>iLen2 )
                 byTar(iCounter) = bySrc1(iCounter)
             else
                 byTar(iCounter) = bySrc1(iCounter) Xor bySrc2(iCounter)
             endif
        endif
    next iCounter程序未测试过,不过原理应该明白吧。
      

  4.   

    vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。 
    vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。 ————————————————————————————
    byTar(iCounter) = iif(bySrc1(iCounter) = bySrc2(iCounter),0,1)————————————————————————————
    iLen1 = ubound(bySrc1)
    iLen2 = ubound(bySrc2)
    ————————————————————————————
    bySrc1 = strconv( sStr1, vbunicode );
    bySrc2 = strconv( sStr2, vbunicode );
    ————————————————————————————有些地方是否要改啊?
    刚学没多久,楼上的看看。。
      

  5.   

    byTar(iCounter) = iif(bySrc1(iCounter) = bySrc2(iCounter),0,1)
    当没说。。俺理解错误。
      

  6.   

    ======================
    iLen1 = ubound(bySrc1)
    iLen2 = ubound(bySrc2)
    ======================
    这两句才对。不过我的确是想用vbfromunicode,因为VB 6用的是Unicode(98下可能不是,但2000和NT绝对是用Unicode),一个字符占两个字节,我想这应该不是我们所想要的。所以我才把它改成我们日常用得比较多的SingleByte。如果程序确是要用Unicode的话,那么那两句可以去掉了。
    另外关于 bySrc1和bySrc2是字节数组,如果相等当然结果为0,但如果不相等的话,我想也不会一定是等于1吧。如:
    bySrc1 为 0x1
    bySrc2 为 0x10
    结果应是0x11喔。