怎么对2个字符串进行异或? 怎么对2个字符串进行异或? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 字符串可以异或吗?if string1<>string2 then .......else.......end if lnhsgj(黑鹰) ??????delphi中处理是没问题的 你需要把字符串转成字节串再进行异或,因为这样异或的结果肯定是有不可见的字符出现,所以不能再用字符串的方式存放。而且VB中的String是使用Unicode存放的(VB 6以后都是Unicode)。dim bySrc1() as byte, bySrc2() as byte , byTar() as bytedim sStr1 as string, sStr2 as stringdim iLen1 as integer, iLen2 as integer , iLen3 as integersStr1="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 endifnext iCounter程序未测试过,不过原理应该明白吧。 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 );————————————————————————————有些地方是否要改啊?刚学没多久,楼上的看看。。 byTar(iCounter) = iif(bySrc1(iCounter) = bySrc2(iCounter),0,1)当没说。。俺理解错误。 ======================iLen1 = ubound(bySrc1)iLen2 = ubound(bySrc2)======================这两句才对。不过我的确是想用vbfromunicode,因为VB 6用的是Unicode(98下可能不是,但2000和NT绝对是用Unicode),一个字符占两个字节,我想这应该不是我们所想要的。所以我才把它改成我们日常用得比较多的SingleByte。如果程序确是要用Unicode的话,那么那两句可以去掉了。另外关于 bySrc1和bySrc2是字节数组,如果相等当然结果为0,但如果不相等的话,我想也不会一定是等于1吧。如:bySrc1 为 0x1bySrc2 为 0x10结果应是0x11喔。 vb高级群:33189279,老鸟请进 孤独剑群 请问如何全面控制WINDOWS任务栏? MSHFlexGrid为何只能绑定如此少的记录(急)?在线等待? List的简单问题 用VB实现SQL SERVER DTS 数据导入导出功能 100分 苦求:frame控件的背景色的改变?memo字段在dbgrid中的显示? 请教!如何在LISTVIEW的第一列添加一个小图标? 急急急 这里有一段vb代码 不知道为什么不能在vs2005中运行 请教picturebox问题,大神请进,急急急…… 循环执行。。。。。紧!!! 请大家多多关照,谢谢!:)
if string1<>string2 then
.......
else
.......
end if
??????
delphi中处理是没问题的
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程序未测试过,不过原理应该明白吧。
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 );
————————————————————————————有些地方是否要改啊?
刚学没多久,楼上的看看。。
当没说。。俺理解错误。
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喔。