将字符串编码为整数.NET

时间:2010-06-13 04:13:26

标签: string encoding

我有一个字符串,我想将其唯一地表示为整数。

例如:A3FJEI = 34950140

我将如何编写EncodeAsInteger(string)方法。据我所知,字符串中的字符数量会使整数大大增加,迫使该值变为long,而不是int。

因为我需要将值作为整数,所以我不需要数字表示对字符串完全唯一。

也许我可以通过字符串的所有字符进行预习并将字符的数字键码相加。

2 个答案:

答案 0 :(得分:3)

如果这些是您的要求:

  1. 某种字符串→整数映射。
  2. 整数不一定是唯一的。
  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));
    }