Algorithm 来自类属性的唯一、人类可读的ID

Algorithm 来自类属性的唯一、人类可读的ID,algorithm,uniqueidentifier,Algorithm,Uniqueidentifier,我想从几个类属性创建一个唯一的、人类可读的ID,例如: Class A contains property c,d,e Class B contains property f,g 所以一个ID代表 c=1 d=2 e=3 f=4 g=5 c=7 d=3 e=4 f=0 g=11 而另一个ID则代表 c=1 d=2 e=3 f=4 g=5 c=7 d=3 e=4 f=0 g=11 为参数起见,属性仅为整数(编辑:范围从0到1000),而实际上它们也可以是浮点和字符串 我正在寻找一种方法,

我想从几个类属性创建一个唯一的、人类可读的ID,例如:

Class A contains property c,d,e
Class B contains property f,g
所以一个ID代表

c=1
d=2
e=3
f=4
g=5
c=7
d=3
e=4
f=0
g=11
而另一个ID则代表

c=1
d=2
e=3
f=4
g=5
c=7
d=3
e=4
f=0
g=11
为参数起见,属性仅为整数(编辑:范围从0到1000),而实际上它们也可以是浮点和字符串

我正在寻找一种方法,将这些值组合成一个简短的、人类可读的ID。此外,我希望能够从ID重建属性。此外,如果可能,属性的微小差异也会导致ID的微小差异

这是一个例子,我认为小的和人类可读的:
H5RT33

有类似的算法吗

编辑: 我写下了ID示例,同时预测了一个问题,如“什么是人类可读的?”。我发现很难描述——例如,MD5就不需要了,而像“Tree”这样的真正的单词是不必要的。 因此,ID是有点在中间,但我并不意味着限制它6个字符,或只有大写字母和数字。
此外,我谈到了整数,而我真正的意思是“0-1000范围内的整数”。

您需要可逆变换(双射),这意味着原始和变换的信息内容是相同的。仅使用大写字母的六字符字母数字代码,如
H5RT33
中,有366个可能值;换句话说,它具有
6*log236=31.1
位信息。另一方面,五个(32位)整数包含
5*32=180
位,这要多得多(当然,除非整数的范围有限)。你说你还想对浮点数和字符串进行编码,它们包含了更多的信息


因此,从严格的信息论角度来看,我认为您将很难满足所有要求。

谢谢,双射关键字为我指明了正确的方向。我将编辑有关ID格式的问题。