为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串(单词)转换为长

将字符串(单词)转换为长

C#
收到一只叮咚 2022-06-18 17:13:54
我想从“Testcase1”、“Testcase2”等字符串创建一个唯一的 ID。因此,我想将字符串分别转换为整数。我已经尝试过了,但我认为数字/ID 既不是唯一的,也不是这种方法正确的。我想将整个单词转换为数字。long numberId = 0;foreach (var character in testString.ToCharArray()){    numberId +=  Convert.ToInt16(character);}
查看完整描述

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


查看完整回答
反对 回复 2022-06-18
?
桃花长相依

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


查看完整回答
反对 回复 2022-06-18
?
忽然笑

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);

}


查看完整回答
反对 回复 2022-06-18
  • 3 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信