string型哈希值的明氏距离比较
来源:互联网 发布:白露级 程序员 编辑:程序博客网 时间:2024/05/17 21:43
前一段时间在网上找以图搜图的资料,发现了感知哈希算法,得出的哈希值以字符串形式保存,我们管这种形式叫做哈希指纹。字符串中为十六进制数,需计算其二进制中的明氏距离,即二进制表示中不一样位数的个数。如下测试代码:
// test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;int LSH(string str1,string str2);int sub(char a,char b);int _tmain(int argc, _TCHAR* argv[]){string str1 = "9e0f53";string str2 = "0b672a";cout<<"str1 = "<<str1.c_str()<<endl;cout<<"str2 = "<<str2.c_str()<<endl;int dis = LSH(str1,str2);cout<<"dis = "<<dis<<endl;int a;cin >> a;return 0;}int LSH(string str1,string str2){//int L = sizeof(str1.c_str());int L = str1.length();cout<<"L = "<<L<<endl;int dis = 0;for(int i=0;i<L;i++){dis += sub(str1[i],str2[i]); }return dis;}unsigned char char2hex(char a){unsigned char t(0);switch(a){case 'a': t = 10; break;case 'b': t = 11; break;case 'c': t = 12; break;case 'd': t = 13; break;case 'e': t = 14; break;case 'f': t = 15; break;default: t = a - '0'; break;;}return t;}int sub(char a,char b){unsigned char a1 = char2hex(a);unsigned char b1 = char2hex(b);unsigned char c1 = a1^b1;cout<<"a1 = "<< (int)a1 <<endl;cout<<"b1 = "<< (int)b1 <<endl;//cout<<"c1 = "<< (int)c1 <<endl;int t(0);unsigned char tem(1);for(int i=0;i<8;i++){if(c1&(tem))t++; tem = tem<<1;}cout<<"t = "<<(int)t <<endl;return t;}
运行结果:
<img src="http://img.blog.csdn.net/20140926140419752?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGF1dF96amI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-family: Arial, Helvetica, sans-serif;" alt="" />
0 0
- string型哈希值的明氏距离比较
- 曼哈顿距离和欧氏距离比较
- 欧氏距离比较相似度的python实现
- Atitti knn实现的具体四个距离算法 欧氏距离、余弦距离、汉明距离、曼哈顿距离
- String类型的比较
- String 类的比较
- string对象的比较
- java String的比较
- string的比较
- String & StringBuffer的比较
- String的比较
- string对象的比较
- String变量的比较
- 类String的比较
- 几种距离的集中比较
- 汉明距离图片相似度比较
- multiset<string>与vector<string>的比较
- toString()、String.valueOf()、(String)的比较
- CMD下logcat输出的log中文乱码问题
- Monkey Tradition(中国剩余定理)
- 正则表达式多行匹配及声明标识
- 弄明白聚集索引和非聚集索引
- 关于输出null对象,以及try/catch/finally比较好玩的一段代码
- string型哈希值的明氏距离比较
- Android学习之 VideoView,SurfaceView(各种视频相关)
- java中文字符乱码编码转换大全
- JSP filter过滤器的功能简要介绍
- Android@id和@+id区别
- java.sql.SQLException: Before start of result set
- IBinder
- win7下安装linux的方法详解及启动顺序设定
- 通过指针访问值之程序声明一个指针和一个变量,然后输出它们的地址和它们所含的值