需要做一个算法用来将文件名转换为数字,望各位大力相助!

Alkaid 2000-08-21 05:21:00
需要将文件名对应到数字,方便搜索。
文件名长度:255 char
数字类型: DWORD
如果转换后有重复的,可以启用二级索引
...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alkaid 2000-08-23
  • 打赏
  • 举报
回复
softsprite:
filename1 = "AAAAABBBBB"
filename2 = "ABBBBAAAAB"
时取值重复
hyzx2000 2000-08-21
  • 打赏
  • 举报
回复
这不就是要找hash table的hash function吗?
有很多方法,要尝试。比如:取每一个字符的第k位;取每一个字符的几位组合;字符经过一些运算后得到一个数值。
示例:
int hashvalue = 0;
char * p = 文件名地址;
while( *p )
{
hashvalue = hashvalue << 1 + (*p) & 0x1;
p ++;
}
int index = hashvalue % N; // N为hash表的桶数

建议:找有关数据结构关于hash查找的资料研究一下。
U皮特U 2000-08-21
  • 打赏
  • 举报
回复
是否需要从数字反推出文件名?如果不需要,我的算法如下:
文件名第一个字节*0x1000000 + 文件名最后一个字节*0x10000 + 文件名所有字节的和
CString strFile="TMP.DOC";
DWORD dwRet;

DWORD dw1 = strFile[0] * 0x1000000;
DWORD dw2 = strFile[strFile.GetLength()-1] * 0x10000;
DWORD dw3 = 0;
for ( int i = 0 ; i < strFile.GetLength() ; i++ )
{
dw3 += (DWORD)strFile[i];
}
dwRet = dw1 + dw2 + dw3;

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧