different erlang

erlang different



Convierte los términos erlang a cadena, o decodifica binario erlang (2)

1) puedes convertir cualquier término a cadena usando

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

2) puede ver el formato binario externo erlang, muchos otros lenguajes tienen bibliotecas para codificar / decodificar ese formato binario erlang. Y en erlang puedes codificar cualquier término por term_to_binary

Tengo un programa erlang que genera datos. Estos datos deben transferirse a través de udp a un programa que no sea erlang para su posterior procesamiento. Ya tengo esta parte en funcionamiento: enviar los datos a través de udp y recibirlos en el otro lado no erlang.

Aquí está el problema. Los datos (términos erlang como las tuplas que contienen listas) no parecen poder repasarse "como están" (es decir, no puedo enviar términos erlang arbitrarios). Al parecer, primero se debe convertir a texto o binario. Convertir a binario parece bastante fácil con un bif que encontré. El problema es que binary gobbledygook sale del otro lado, y no conozco ninguna forma fácil de decodificarlo (el otro lado es no erlang).

Salvo que alguien me diga una manera fácil de decodificar bóveda bóveda en el otro lado, me gustaría que los datos se enviaran como una representación de cadena de los términos, por ejemplo, una tupla como esta

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

enviado así:

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

No he visto ningún bif de este tipo, es decir, "convert_term_to_ascii / 1", etc. Sé que podría escanearlo y enviar representaciones en token de los términos, pero no quiero hacer eso: descifrar eso en el otro lado es solo una Dolor con el que no quiero lidiar.

Sé que no soy la primera, segunda o tercera persona en tener este problema. Tiene que ser bastante común. ¿Cómo se trata normalmente?

¿Puede alguien indicarme algún recurso que me muestre cómo 1) convertir binario gobbledygook a ascii (necesario en el lado no erlang) o 2) convertir directamente los términos a una cadena (necesario en el lado erlang)?

O, dime, ¿cómo me equivoco y cómo debería estar haciendo esto realmente?

Gracias.


Recomendaría convertir los términos erlang en JSON, con cualquiera de las bibliotecas conocidas (escuché buenas palabras sobre rfc4267 ). Sería una tarea trivial convertir JSON de nuevo con cualquier plataforma que no sea erlang, supongo. )