转换算法

挣扎中前行 2014-01-20 05:19:10
如何实现由字符串转换为指定范围内的整数?哈希函数是否可以实现?对一串字符做的哈希如何能映射到指定范围内的唯一整数?

望指点下
...全文
197 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-01-22
  • 打赏
  • 举报
回复
搜“暴雪哈希算法”
挣扎中前行 2014-01-22
  • 打赏
  • 举报
回复
引用 9 楼 u013531919 的回复:
基本上就是hash,要限定范围用%运算。
我就是这样办的,冲突太严重啦!!!
挣扎中前行 2014-01-22
  • 打赏
  • 举报
回复
引用 5 楼 dcw0402 的回复:
帮顶一个,遇到类似的问题,没有很好的办法,我默认是用md5的
md5是唯一,但出来的都是乱串啊如何映射啊?
nice_cxf 2014-01-21
  • 打赏
  • 举报
回复
引用 4 楼 zhenwo123 的回复:
[quote=引用 3 楼 nice_cxf 的回复:] 要看字符串的长度,说实话多半是不可能完成的任务
那平常那些hash都干啥用的啊?[/quote] hash是有碰撞的,保证不了唯一 除非你字符串长度短,不然从信息论角度看,是不可能实现11对应的,就算只有8位只有大小写字母加数字,总数也已经是62^8,已经超过了整数的最大范围
dcw0402 2014-01-21
  • 打赏
  • 举报
回复
帮顶一个,遇到类似的问题,没有很好的办法,我默认是用md5的
挣扎中前行 2014-01-21
  • 打赏
  • 举报
回复
引用 3 楼 nice_cxf 的回复:
要看字符串的长度,说实话多半是不可能完成的任务
那平常那些hash都干啥用的啊?
vipcxj 2014-01-21
  • 打赏
  • 举报
回复
引用 10 楼 vipcxj 的回复:
一一映射理论上是可以的,也就是1L说的康托展开,但这只是理论,因为数学里面自然数可以是无穷,所以你一个足够长的字符串,可能就要映射到一个几M字节的整型上,显然这是毫无意义的。至于Hash算法,那更不可能一一映射了,因为Hash算法是有冲突滴~~~
不过如果LZ限定你字符串长度足够短,康托展开还是能够办到滴,因为康托展开对于n位的序列,至多到n!,这样n不是特别大,比如20以下,用long long就能存下所有的映射
vipcxj 2014-01-21
  • 打赏
  • 举报
回复
一一映射理论上是可以的,也就是1L说的康托展开,但这只是理论,因为数学里面自然数可以是无穷,所以你一个足够长的字符串,可能就要映射到一个几M字节的整型上,显然这是毫无意义的。至于Hash算法,那更不可能一一映射了,因为Hash算法是有冲突滴~~~
richselian 2014-01-21
  • 打赏
  • 举报
回复
基本上就是hash,要限定范围用%运算。
derekrose 2014-01-21
  • 打赏
  • 举报
回复
哈希+链表??
SKATE11 2014-01-21
  • 打赏
  • 举报
回复
我以前在CSDN也问过这个 都说不可能 会有冲突
nice_cxf 2014-01-20
  • 打赏
  • 举报
回复
要看字符串的长度,说实话多半是不可能完成的任务
熊熊大叔 2014-01-20
  • 打赏
  • 举报
回复
字符串的经典hash算法 . http://blog.csdn.net/hengyunabc/article/details/5914934
lpcads 2014-01-20
  • 打赏
  • 举报
回复
康托展开怎么样。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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