在C#中从base64字符串转换为long

时间:2012-02-08 16:33:07

标签: c# .net string base64 md5

您好我使用以下代码生成了一些字符串:

private static string CalcHashCode(byte[] data)
{
    MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
    Byte[] hash = md5Provider.ComputeHash(data);

    return Convert.ToBase64String(hash);
}

如何从编码的base64字符串中获取唯一的 long ,我的意思是相反的操作,然后将其转换为long?

private long CalcLongFromHashCode(string base64Hashcode)
{
  //TODO
}

提前致谢。

2 个答案:

答案 0 :(得分:8)

您无法将base-64字符串转换为long(如果它不适合,则可能会被截断,因为long仅使用8个字节)...

可以将它转换为字节数组('相反的'操作):

 byte[] hash = new byte[] { 65, 66, 67, 68, 69 };
 string string64 = Convert.ToBase64String(hash);
 byte[] array = Convert.FromBase64String(string64);

如果您的数组包含至少8个字节,那么您可以得到您的长值:

long longValue = BitConverter.ToInt64(array, 0);

答案 1 :(得分:6)

首先,将字符串转换为byte [],

var array = Convert.FromBase64String(base64Hashcode);

然后将字节数组转换为long

var longValue = BitConverter.ToInt64(array, 0);

如前所述,你会受到截断。


相反的方向:

var bits = BitConverter.GetBytes(@long);
var base64 = Convert.ToBase64String(bits);

示例:

218433070285205504 : "ADCMWbgHCAM="
long.MaxValue : "/////////38="