将字符串转换为固定长度的数字并将其转换回

时间:2017-01-19 20:47:12

标签: string algorithm encryption numbers decimal

我有超过100个cpp文件。我需要为每个人分配唯一的ID。我还需要根据他们的ID知道它是哪个文件。我发现文件名的最大长度包含64个字符,ID最多只能是8个字节。是否有任何算法可以帮助在C ++中为VS2013中的源文件分配唯一ID,还可以让用户根据ID知道它是哪个文件?

只需存储文件名和整数之间的映射。 -----是的,这种方式非常简单。但每当人们创建新的课程文件时,映射都需要重新编码。所以我不会用这种方式。

这是原始问题,因此以下评论意味着

现在我有一堆字符串,比如“AAA”或“ABBCCHH”。字符串的最大值包含64个字符。现在我需要一个可以将字符串转换为数字的算法(不一定是整数,双浮点也可以)。但是数字的长度必须固定。例如,如果“A”转换为12312,5位数,“ABBHGGH”在转换后也应该有5位数字。这些数字也可以转换回原始字符串。有没有算法可以做到这一点?转换后的数字不能超过8个字节。这就是为什么我不能只使用ASCII等简单算法。我不知道哪种算法可以做到这一点。

1 个答案:

答案 0 :(得分:1)

要生成任意文件名集的唯一ID(此处为实际问题),您可以使用加密哈希值(SHA-1,-256,-384,-512)。这将产生唯一的,固定长度的十六进制输出。如果您不能在输出中允许字符a-f,则可以将十六进制值转换为十进制。

此过程不可逆,但您可以维护ID的输入值的映射(查找表)。

如果您想要一个更简单的解决方案,只需十六进制编码文件名。这是可逆的。 (如果需要,您可以在此处添加十六进制 - >十进制转换)。