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