将erlang术语转换为字符串,或对erlang二进制进行解码

nzkunb0c  于 7个月前  发布在  Erlang
关注(0)|答案(3)|浏览(150)

我有一个生成数据的erlang程序。这些数据需要通过udp传输到一个非erlang程序进行进一步的处理。我已经让这个部分工作了-通过udp发送数据,并在另一个非erlang端接收它。
问题来了。数据(erlang术语,如包含列表的元组)似乎无法按“原样”(也就是说,我不能只发送任意的erlang术语)。显然,它需要先转换为文本或二进制。使用我找到的bif,转换为二进制似乎很容易。问题是,二进制官样文章从另一边出来了。我不知道有什么简单的方法来解码它(另一边是非erlang)。
除非有人告诉我一些简单的方法来解码另一端的二进制官样文章,否则我希望数据以术语的简单字符串表示形式发送--例如,像这样的元组:

{[1,2,3],[4,5,6]}

字符串
发送方式如下:

"{[1,2,3],[4,5,6]}"


我还没有见过任何这样的bif,即“convert_term_to_ascii/1”等。我知道我可以扫描它并发送这些术语的令牌表示,但我不想这样做--在另一端解码只是一个痛苦,我不想处理。
我知道我不是第一个、第二个或第三个有这个问题的人。它一定是相当普遍的。它通常是如何处理的?
有人能给我介绍一些资源,告诉我如何1)将二进制gobbledygook转换为ascii(在非erlang端需要),或者2)直接将术语转换为字符串(在erlang端需要)?
或者,告诉我我错在哪里,我该怎么做?
谢谢.

1cklez4t

1cklez4t1#

1)您可以使用将任何术语转换为字符串

R= io_lib:format("~p",[yourtermhere]),
lists:flatten(R)

字符串
2)你可以看看erlang外部二进制格式,很多其他语言都有对erlang二进制格式进行编码/解码的库。在erlang中,你可以按term_to_binary编码任何项

egdjgwm8

egdjgwm82#

我建议使用任何一个已知的库(听到关于rfc4267的好话)将erlang术语转换为JSON。我猜,使用任何非erlang平台将JSON转换回来都是一项微不足道的任务。

3xiyfsfu

3xiyfsfu3#

建议的答案不适用于当前部分

相关问题