我有一个生成数据的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端需要)?
或者,告诉我我错在哪里,我该怎么做?
谢谢.
3条答案
按热度按时间1cklez4t1#
1)您可以使用将任何术语转换为字符串
字符串
2)你可以看看erlang外部二进制格式,很多其他语言都有对erlang二进制格式进行编码/解码的库。在erlang中,你可以按term_to_binary编码任何项
egdjgwm82#
我建议使用任何一个已知的库(听到关于rfc4267的好话)将erlang术语转换为JSON。我猜,使用任何非erlang平台将JSON转换回来都是一项微不足道的任务。
3xiyfsfu3#
建议的答案不适用于当前部分