短串的散列函数

短串的散列函数,第1张

概述我想将功能名称从弱嵌入式系统发送到主机进行调试.由于两者都通过RS232连接,这是带宽短的,所以我不想以字面方式发送功能的名称.长约15个字符长的函数名,我有时想以相当高的速度发送这些名字. 我想到的解决方案是找到一个哈希函数,将这些函数名称哈希到单个字节,并且只发送这个字节.主机将扫描源中的所有功能,使用相同的功能计算其散列,然后将该散列转换为原始字符串. 散列函数必须是 >短距离碰撞 >简单( 我想将功能名称从弱嵌入式系统发送到主机进行调试.由于两者都通过RS232连接,这是带宽短的,所以我不想以字面方式发送功能的名称.长约15个字符长的函数名,我有时想以相当高的速度发送这些名字.

我想到的解决方案是找到一个哈希函数,将这些函数名称哈希到单个字节,并且只发送这个字节.主机将扫描源中的所有功能,使用相同的功能计算其散列,然后将该散列转换为原始字符串.

散列函数必须是

>短距离碰撞
>简单(因为我的嵌入式系统不需要太多的代码).
>安装一个字节

显然,它不需要任何方式的安全,只有无碰撞.所以我不认为使用加密相关的哈希函数值得他们的复杂性.

示例代码:

int myfunc() {    sendToHost(hash("myfunc"));}

主持人将能够向我介绍执行myfunc功能的时间列表.

是否有一些已知的哈希函数保持上述条件?

编辑:

我假设我将使用不到256个函数名.
>我可以使用多个单字节,两个字节会让我很好的覆盖.
>我更喜欢使用哈希函数,而不是在客户端和服务器上使用相同的功能到字节的映射,因为(1)我没有在客户端上执行映射,我不知道我想要放一个用于调试目的. (2)它需要我的构建链中的另一个工具,将功能名称表注入到我的嵌入式系统代码中.哈希在这方面更好,即使这意味着我会在很多时间碰撞一次.

解决方法 尝试 minimal perfect hashing:

Minimal perfect hashing guarantees that n keys will map to 0..n-1 with no collisions at all.

包含C代码.

总结

以上是内存溢出为你收集整理的短串的散列函数全部内容,希望文章能够帮你解决短串的散列函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存