我需要创建两个 C# 函数,一个(称为 f1)将整数转换为字符串,另一个(称为 f2)将该字符串转换为起始整数。字符串应该看起来像一组随机的 5 个字符(字母和数字)。必须确保至少前 1600 万个整数没有冲突(同一字符串有两个可能的整数)(我对转换太大的数字不感兴趣)。
//Where the "BytesToBase32" function converts a byte array to base 32 ()
string IntToString(int id) {
byte[] bytes = BitConverter.GetBytes(id);
return Utils.BytesToBase32(new byte[] {
(byte)(004 + 145 * bytes[0] + 113 * bytes[1] + 051 * bytes[2]),
(byte)(166 + 237 * bytes[0] + 010 * bytes[1] + 212 * bytes[2]),
(byte)(122 + 171 * bytes[0] + 135 * bytes[1] + 020 * bytes[2])
});
}
它返回如下值:
- 0 --> 0ij7k
- 1 --> im9ia
- 2 --> 4q0d0
- 3 --> mtmnm
- ...
如您所见,字符串似乎是随机的(换句话说,无法理解“0ij7k”出现在“im9ia”之前,反之亦然)。
问题是函数f2不能通过简单地求解f1使用的3方程组得到。有没有更简单的方法来获得 f1 和 f2?