Int32的最短字符串表示形式

时间:2010-11-04 10:44:40

标签: c# asp.net algorithm string

我需要将Int32转换为必须在网络表单上输入的代码。为了让访问者保持简单,这段代码需要尽可能简单和简短。

是否有人知道使用[0-9]和[A-Z]将Int32转换为最短字符串表示的良好算法?

6 个答案:

答案 0 :(得分:6)

base 36表示是您想要的。这使用字母和数字符号来编码数字,用于非常紧凑的表示。

答案 1 :(得分:6)

可以编码到base-36,但是对于每个人的理智(尤其是你的用户,处理I vs 1,O vs 0等),我建议只是坚持使用hex;加上它内置于:

    int value = 22334;
    string hex = Convert.ToString(value, 16); // 573e
    value = Convert.ToInt32(hex, 16);

答案 2 :(得分:1)

举个例子,我没有查看所有细节。

给出32位int:

将其拆分为8x4位

4位阵列给出2 ^ 4 = 16种可能的组合

然后将4位的每个文字值与从小写字母A或其他任何内容开始的ascii字符代码进行匹配。

答案 3 :(得分:0)

string s = code.ToString();

答案 4 :(得分:0)

您可以使用Encoding类来获取字符串:

int value = 1234;
string intString = Encoding.Default.GetString(BitConverter.GetBytes(value));

您可以选择自己想要的默认编码,而不是默认编码。

答案 5 :(得分:0)

您有几个选择:

  1. Base36符合您的规定要求
  2. Base64较短但你有逃避final ='s
  3. 的问题

    你遇到的一个基本问题是你做得越短,就越难以正确记住。因此,您需要考虑是否要将其用于复制/粘贴或让人们记住。

    对于复制/粘贴,我可能会使用对齐的base64,以避免结尾处的等号(但您可以将=更改为_并在服务器上转换回来。)

    对于人类可读的,建议完全做其他事情。