3 回答
TA贡献1784条经验 获得超9个赞
不确定这是否是您所追求的:
static void Main(string[] args)
{
var inputText = "Testcase1";
Console.WriteLine($"{inputText} =>{CalculateTotal(GetHashString(string.Concat(inputText,DateTime.Now.Date.ToString(), DateTime.Now.TimeOfDay.ToString())).ToArray<char>())}");
inputText = "Testcase2";
Console.WriteLine($"{inputText} =>{CalculateTotal(GetHashString(string.Concat(inputText,DateTime.Now.Date.ToString(), DateTime.Now.TimeOfDay.ToString())).ToArray<char>())}");
}
static string GetHashString(string inputText)
{
HashAlgorithm hash = new SHA256Managed();
var bytes = new byte[inputText.Length];
bytes = Encoding.ASCII.GetBytes(inputText);
return Encoding.ASCII.GetString( hash.ComputeHash(bytes));
}
static long CalculateTotal(char [] items)
{
var i = Array.ConvertAll<char, long>(items, Convert.ToInt64);
return i.Sum();
}
输出:
测试用例1 => 1880
测试用例2 => 1788
TA贡献1860条经验 获得超8个赞
这个实现如何使用基于测试字符串的字节数组之和:
long uniqueId = "Testcase1".SelectMany(BitConverter.GetBytes).ToArray().Sum(c=> c);
long uniqueId2 = "Testcase2".SelectMany(BitConverter.GetBytes).ToArray().Sum(c => c);
测试用例1 -> 877
测试用例2 -> 878
TA贡献1806条经验 获得超5个赞
我没有证据,但我认为以下方法会产生独特的价值。
public static void Main()
{
long numberId = 0;
var testString = "Testcase3";
long multiplier = (long)Math.Pow(10,testString.Length);
foreach (var character in testString.ToCharArray())
{
numberId += Convert.ToInt16(character)*multiplier;
multiplier /=10;
}
Console.WriteLine(numberId);
}
- 3 回答
- 0 关注
- 82 浏览
添加回答
举报