在unsafe中把string切成8字节一段一段的int类型的,切割的截止位置以短的那个string为标准
那么string1在内存中就可以为:intaintbincintd... (inta, intb, intc, intd都是int变量)
string2向类似为int2aint2bint2cint2d...
inta-int2a=0的话就代表这个部分完全相同
intb-int2b=0的话也代表这个部分相同
一直减到一个部分发现不等于零的话,就把那个差的绝对值以二分法对256^1~7进行比较从而可以找出开始不相同的那一位是哪一位,当然,如果你嫌这种找不同的方式太麻烦,那就直接在这个地方一位一位地对比就好了
你也可以以16字节为一段的int64为单位来进行对比,这样可以把需要的对比次数减半,但是当strings不够长的情况下这个没意义,或者你也可以把int32换成int16如果strings会很短
这个地方不可以使用double或者single来操作,因为它们的加减并不是直接按照高位到低位来进行的
unsafe嘛,参考一下这个。。。然后再参考点别的吧。。。其实这个方法主要是在string比较长的时候可能才会有用
https://bbs.bccn.net/viewthread.php?tid=26219&extra=page%3D5%26amp%3Bfilter%3Ddigest