您好我使用以下代码生成了一些字符串:
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
}
提前致谢。
答案 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="