【发布时间】:2012-04-17 21:51:57
【问题描述】:
我想知道如何生成无效数据的哈希键。
我正在开展一个网络项目并处理数据包。我必须生成哈希表。在哪个数据包头上进行散列。但我不知道数据包头的结构或类别。所以,关于这个的任何想法。我只是想将其转换为无效。并对无效数据进行散列以生成散列键。
任何其他想法。 GOOD Logic 将受到欢迎。
【问题讨论】:
-
基本上这行不通。从 Java 的角度考虑,hashCode 必须与 equals 一致。如果你对数据一无所知,你怎么知道两个是否相等——除了比较每个字节?如果你不知道它们是否相等,你怎么能期望在哈希表中找到它们?
-
谢谢...好的,这绝对正确。但我的想法不同。假设有一个 void 类型的数据。我们必须把它保存在一个表格中。
-
如果(a)你知道它们有多长,并且(b)你愿意接受长度相等加上字节相等作为你对相等的定义,那么散列和比较数据块就不难了的两个 blob。这个问题很简单,但你还没有真正说出你卡在哪里,所以人们很难提供好的答案。
-
附加评论:“如何生成无效数据的哈希键” 措辞不当。没有“空数据”,
void*是指向 unspecified 类型数据的指针,但您不能实例化void类型的变量。相反,您会将指向 void 另一端的事物视为字节数组(通常由char或unsigned char表示(或在字节为八位字节int8_t或 @987654326 的机器上) @))。 -
你至少知道数据的大小吗?否则,您将无法正确使用它,因为您将面临访问无效内存的风险。