将字符串表示为唯一的 int 代码
Represent string into unique int code
我的问题是如何将字符串表示为 int 代码,我不希望它被解析或转换为 int(例如从英语翻译成法语或德语)。
我想要的是把字符串转换成一个int码,可以作为搜索参考,本来打算用字符串的hash码来转换的,但是hash和环境设置有关系机器的配置对于我的项目来说不是最佳的,我已经考虑过使用每个字母的 ascii 代码来表示单词,但遗憾的是,有大量的长单词使用多种语言,而且应用程序是全球化的,所以这不是一个非常可行的解决方案,该项目将部署为 Azure 云站点,因此我没有全文搜索
知道在这种情况下我能做什么吗?
你已经给出了解决方案而不是给出需求,所以很可能有更好的选择。
无论如何,您可以将独立于平台的散列与托管加密 类 结合使用,例如 SHA512Managed. Be aware however that this is not guaranteed unique, so you might end up with collisions; but at least it's built in and you don't have to reinvent the wheel. Go here。
一个这样的散列是获取每个字母的总和字符代码 int hash = s.Select<char, int>(x => (int)x).Aggregate((x, y) => x + y);
但是该散列有冲突。另一种方法是连接每个字母的字符代码,但是您很快就会超过每个整数允许的数量。一种解决方法是从字符 uint hash = Convert.ToUInt32(s.Select<char, string>(x => (((int)x) - 64).ToString()).Aggregate((x, y) => x + y));
的值中减去 64
我通过创建另一个 table 来解决这个问题,它只包含每个 post 中的单词并使用每个单词的 ID 调用它
我的问题是如何将字符串表示为 int 代码,我不希望它被解析或转换为 int(例如从英语翻译成法语或德语)。
我想要的是把字符串转换成一个int码,可以作为搜索参考,本来打算用字符串的hash码来转换的,但是hash和环境设置有关系机器的配置对于我的项目来说不是最佳的,我已经考虑过使用每个字母的 ascii 代码来表示单词,但遗憾的是,有大量的长单词使用多种语言,而且应用程序是全球化的,所以这不是一个非常可行的解决方案,该项目将部署为 Azure 云站点,因此我没有全文搜索
知道在这种情况下我能做什么吗?
你已经给出了解决方案而不是给出需求,所以很可能有更好的选择。
无论如何,您可以将独立于平台的散列与托管加密 类 结合使用,例如 SHA512Managed. Be aware however that this is not guaranteed unique, so you might end up with collisions; but at least it's built in and you don't have to reinvent the wheel. Go here。
一个这样的散列是获取每个字母的总和字符代码 int hash = s.Select<char, int>(x => (int)x).Aggregate((x, y) => x + y);
但是该散列有冲突。另一种方法是连接每个字母的字符代码,但是您很快就会超过每个整数允许的数量。一种解决方法是从字符 uint hash = Convert.ToUInt32(s.Select<char, string>(x => (((int)x) - 64).ToString()).Aggregate((x, y) => x + y));
我通过创建另一个 table 来解决这个问题,它只包含每个 post 中的单词并使用每个单词的 ID 调用它