我希望将弱嵌入式系统中的函数名发送到主机以进行调试。由于两者通过RS232连接,带宽短缺,因此我不想直接发送函数名称。有一些长度为15个字符的函数名称,我有时候想要以相当高的速率发送这些名称。
我考虑的解决方案是找到一个哈希函数,可以将这些函数名称哈希到单个字节,并仅发送该字节。主机将扫描源中的所有函数,使用相同的函数计算其哈希值,然后将哈希值转换为原始字符串。
哈希函数必须满足以下条件:
1. 对于短字符串无碰撞。 2. 简单(因为我不想在嵌入式系统中编写太多代码)。 3. 适合单个字节。
显然,它不需要特别安全,只需无碰撞即可。因此,我认为使用与加密相关的哈希函数并不值得它们的复杂性。
以下是示例代码:
主机将能够向我呈现
是否有一些已知的哈希函数符合上述条件?
编辑:
1. 我假设我会使用少于256个函数名。 2. 我可以使用多个字节,两个字节就足够了。 3. 我更喜欢使用哈希函数而不是在客户端和服务器上使用相同的函数到字节映射,因为(1)我在客户端没有映射实现,也不确定是否想要为调试目的添加一个。 (2)它需要我的构建链中的另一个工具将函数名称表注入我的嵌入式系统代码中。在这方面,哈希更好,即使这意味着我偶尔会发生冲突。
我考虑的解决方案是找到一个哈希函数,可以将这些函数名称哈希到单个字节,并仅发送该字节。主机将扫描源中的所有函数,使用相同的函数计算其哈希值,然后将哈希值转换为原始字符串。
哈希函数必须满足以下条件:
1. 对于短字符串无碰撞。 2. 简单(因为我不想在嵌入式系统中编写太多代码)。 3. 适合单个字节。
显然,它不需要特别安全,只需无碰撞即可。因此,我认为使用与加密相关的哈希函数并不值得它们的复杂性。
以下是示例代码:
int myfunc() {
sendToHost(hash("myfunc"));
}
主机将能够向我呈现
myfunc
函数执行时间列表。是否有一些已知的哈希函数符合上述条件?
编辑:
1. 我假设我会使用少于256个函数名。 2. 我可以使用多个字节,两个字节就足够了。 3. 我更喜欢使用哈希函数而不是在客户端和服务器上使用相同的函数到字节映射,因为(1)我在客户端没有映射实现,也不确定是否想要为调试目的添加一个。 (2)它需要我的构建链中的另一个工具将函数名称表注入我的嵌入式系统代码中。在这方面,哈希更好,即使这意味着我偶尔会发生冲突。