今天调试代码遇到个问题 直接打印字符串 显示乱码,需要转换为可视字符,网上的资料是使用
等价为
encode('hex')
但是后续调用swig接口函数的过程中,对汉明距离进行计算得到的结果很奇怪,
输出字符串1:2c20f2
输出字符串2:1bc55a
统计二者汉明距离: 7
不太明白怎么来的,将原有cpp程序略作修改在vc上运行一下发现一个现象:
for (unsigned int i = 0; i < remaining; i++) {
xa = (xa << 8) | (ap[i]);
xb = (xb << 8) | (bp[i]);
}
当
xa = (xa << 8) | (ap[i]);
等价为
(0x00002c20<<8)|0xf2
也就是xa为0x2c20,ap[i]为0x2f运行结果为
xa = 0xfffffff2
其中ap定义为
const char* ap = a.data();
可以看出ap应该是char(1byte