2 shuai wy shuai_wy 于 2017.01.12 14:48 提问

C# HashCode转回字符串

字符串“北京”转成HashCode有两个值,有时候是321841321,有时候798348351,
我想把HashCode转回字符串,应该怎样实现

2个回答

caozhy
caozhy   Ds   Rxr 2017.01.12 15:05
已采纳

经常面试让你证明,为什么hash算法是不可逆的。
证明如下:
字符串可以是“北京”,也可以“中华人民共和国北京市海淀区”。字符串有无穷多个不同的值。
hash的长度是0-9999999999,只有这么多可能性。
将无限集合映射到一个有限元素集合,结果必然是一个hash对应无穷多原始的数据。
所以没法转换。证明完毕。
像这种问题都搞不清楚的,一般我们都不招的好吧。

caozhy
caozhy 回复精神病人思路广_: 根据语言规范,只能保证hash在程序一次运行的一个实例里,相同的值对应相同的hash,不同的值hash可以相同可以不同。不保证两次程序运行,或者不同平台/语言的运行,hash相同
11 个月之前 回复
shuai_wy
shuai_wy 那么问题中,北京有了两个值的原因是什么呐?空格?
11 个月之前 回复
shuai_wy
shuai_wy 哈哈哈,厉害了,我就想知道,您是给CSDN找人吗?
11 个月之前 回复
oyljerry
oyljerry   Ds   Rxr 2017.01.12 14:54

HashCode是不可逆的,你只能比较两个字符串的HashCode是否相等来判断字符串是否相同,而不能直接反推出字符串

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!