是否可以将Erlang Atom转换为数值?

ukdjmx9f  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(138)

据我所知,Erlang中的原子作为索引存储在原子表中,即它们本质上是数字。
我希望计算包含原子的列表的哈希值,因此理想情况下,我希望将原子转换为数字进行处理。我知道数字在不同的虚拟机之间可能会有所不同,但这与我的用例无关--我只是在寻找一种简单的方法将它们转换为数值。
我想我可以将它们转换回列表或二进制文件(但这些是组成名称的字符列表),并使用这些值来计算哈希值(本质上是原子的 name)。
所以我的问题是:
1.是否有可能获得原子的内部(数值)值?
1.我是否应该完全不用担心这个问题,而是使用atom_to_list函数,它可能只会稍微慢一点?

3htmauhk

3htmauhk1#

不确定是否有方法访问原子表索引,但如果您想获得Erlang项的散列值,一个简单的方法是erlang:phash2/1

> erlang:phash2(foo).
27999

散列值基于原子的名称,因此类似于您的atom_to_list想法。

相关问题