我有一个字符串,我想将其唯一地表示为整数。
例如:A3FJEI = 34950140
我将如何编写EncodeAsInteger(string)方法。据我所知,字符串中的字符数量会使整数大大增加,迫使该值变为long,而不是int。
因为我需要将值作为整数,所以我不需要数字表示对字符串完全唯一。
也许我可以通过字符串的所有字符进行预习并将字符的数字键码相加。
答案 0 :(得分:3)
如果这些是您的要求:
然后你很幸运,因为这正是GetHashCode()
方法所做的! MSDN页面提供了一些示例哈希码。请注意,这些都是完全随意的,可以在CLR的未来版本中进行更改。
“”的哈希码是:0x00001505,5381
“a”的哈希码是:0x0002B5C4,177604
“ab”的哈希码是:0x00596E26,5860902
“abc”的哈希码是:0x0B873285,193409669
“abd”的哈希码是:0x0B873282,193409666
“abe”的哈希码是:0x0B873283,193409667
“abcdef”的哈希码是:0x4DDB4BE2,1306217442
“abcdeg”的哈希码是:0x4DDB4BE3,1306217443
“abcdeh”的哈希码是:0x4DDB4BEC,1306217452
“abcdei”的哈希码是:0x4DDB4BED,1306217453
“Abcdeg”的哈希码是:0x941C4FC3,-1810083901
“Abcdeh”的哈希码是:0x941C4FCC,-1810083892
“Abcdei”的哈希码是:0x941C4FCD,-1810083891
答案 1 :(得分:0)
protected int EncodeStringAsInt(string value)
{
return value.ToCharArray().Sum(c => Convert.ToInt32(c));
}