【问题标题】:Alpha Characters to 32-bit integer字母字符到 32 位整数
【发布时间】:2018-01-08 04:43:24
【问题描述】:

我正在阅读有关哈希表/字符串哈希的 PluralSight 教程,并遇到了一个称为“折叠”的哈希示例,其中演示者以四人一组的方式将字符串字符转换为 32 位整数。

在前 4 个字符中,字母“lore”他说“当你获取这些字符的字节,然后将它们拼凑成一个 32 位值时,我们最终会得到 17 亿个值”,并且他出示了号码“1701998444”。

他是如何从字母“lore”中得出“1701998444”的?

【问题讨论】:

  • x[0] << 24 + x[1] << 16 + x[2] << 8 + x[4]。也就是说,4 字节组中的每个字节(8 位,表示 ASCII 中的一个字符)被“移位”到一个 32 位整数(由.. 4 个字节组成)中的位置。
  • 非常酷...非常感谢!
  • 也就是说,我算了一下,得到 1819240549 :} - (108<<24)+(111<<16)+(114<<4)+101。所以它被编码为 reversed 为 e-r-o-l (e

标签: binary 32-bit


【解决方案1】:

每个英文字母都有一个分配给它的 ASCII 数字代码。 “A”是 65。“Z”是 65 + 25 = 90。

每个以 10 为底的整数对应一个二进制整数,如下所示。

l -> 108 -> 1101100
o -> 111 -> 1101111
r -> 114 -> 1110010
e -> 101 -> 1100101

然后以相反的顺序:

"erol" = 1100101011100100110111101101100 = 1701998444

字符串以相反顺序存储的原因是它被存储为“小端”,而不是“大端”。

这篇文章解释的很好:Little Endian

【讨论】:

    猜你喜欢
    • 2015-10-15
    • 1970-01-01
    • 2015-03-21
    • 2017-02-06
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2011-06-10
    相关资源
    最近更新 更多