我想在Java中构造一个表示 DICT 术语的字符串,该字符串将传递给Erlang进程,以反映为erlang术语(字符串到术语)。
我可以轻松地为ORDDICT实现这一点,因为它们被构造为元组列表中的简单排序键/值对,例如:[{field1,“value1”},{field2,“value2}] < / p>
但是,对于DICTS,它们被编译成一个特定的术语,我想找到如何对其进行逆向工程。我知道这个结构可以改变新版本,但是性能的好处和与Java集成的简易性将克服这一点。不幸的是,Erlang的JInterface基于简单的数据结构。有效的DICT类型将非常有用。
一个简单的dict定义如下:
D1 = dict:store("field1","AAA",dict:new()).
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],
[["field1",65,65,65]],
[],[],[],[],[],[],[]}}}
从上面可以看出,有些坐标我不明白它们的意思(数字1,16,16,8,80,48和一组空列表,它们也可能代表某些东西。
添加另外两行(键值对)会使数据看起来像:
D3 = dict:store("field3","CCC",D2).
{dict,3,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],
[["field3",67,67,67]],
[],[],[],[],[],
[["field1",65,65,65]],
[],[],[],[],
[["field2",66,66,66]],
[],[]}}}
从上面我可以注意到:
问题,是否有一种方法(算法)可靠地直接从Erlang外部创建DICT字符串?