Back to "来自字符串输入扩展名的指导格式字符串 。"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

C#

来自字符串输入扩展名的指导格式字符串 。

Friday, 13 September 2024

小型员额

用于解决我遇到的一个问题的小型但可能有用的解决方案。 也就是说, 如何从字符串输入中生成一个 GUID, 其中“ Guid” 总是有效的, 但对任何给定的输入字符串来说是独一无二的 。

我需要这个RSS feed 发电机我想为种子中的每个项目生成一个 GUID, 它是可重复的, 但每个项目都独一无二 。

事实证明XxHash128这对于它来说是完美的, 因为它总是给出128 位( 或 16 位元) hash 。 这意味着它可以用来从没有“ Array” 的字符串输入中生成 GUID 。 compy 无稽之谈 。

     public  static string ToGuid(this string  name)
    {
        var buf = Encoding.UTF8.GetBytes(name);
        var guid = XxHash128.Hash(buf);
        var guidS =  string.Format("{0:X2}{1:X2}{2:X2}{3:X2}-{4:X2}{5:X2}-{6:X2}{7:X2}-{8:X2}{9:X2}-{10:X2}{11:X2}{12:X2}{13:X2}{14:X2}{15:X2}", 
            guid[0], guid[1], guid[2], guid[3], guid[4], guid[5], guid[6], guid[7], guid[8], guid[9], guid[10], guid[11], guid[12], guid[13], guid[14], guid[15]);
        return guidS.ToLowerInvariant();
    }

这是一个简单的扩展方法, 使用字符串输入, 返回一个 GUID 。 TheXxHash128是来自System.IO.Hashing命名空间 。

当然,你可以使用任何能给出128位散列的散列算法。XxHash128这只是一个好选择,因为它是快速的, 并给出一个良好的散列值分布。

您也可以返回new Guid(<string>)从这里获得可用于数据库或其他图形用户界面数据系统具体使用案例的实际《指南》。

logo

©2024 Scott Galloway