我一直在扩展阿姆斯特朗经典的接口示例的python版本.在沟通字节时,一切正常.但是,我想传达长整数和浮点数.Mabye甚至(哦,不)字符串.这是我的代码:http : //pastebin.com/epxgDmvu http://pastebin.com/rD7CWRkz
首先,我知道如何发送的所有内容都是字节.erlang可以发送任何其他内容吗?或者我是否必须将float转换为字节列表,将其发送到python然后将其组装回到python中的float?
而且,更好的方式:如果我使用'f'格式打包,erlang会将其识别为字节列表.有没有办法说服erlang将这些字节作为一个浮点数?如果没有,我在哪里可以找到如何将erlang列表转换为erlang float?
如果erlang只能传递字节,你如何建议我发送一个整数列表?如果我将整数转换为字节列表,那么我不能在一个消息中发送它们,因为接收器不会知道一个整数结束而其他整数开始,对吧?我应该逐个发送整数吗?
是的,我正在研究ErlPort和py-interface以及其他一些,但我想从基础开始.
此致,dijxtra
在低(从编程的角度来看)级别,您总是通过不同的外部接口(管道,网络,文件......)独立于您正在使用的编程语言发送/接收一堆字节.例如,当您使用管道(您调用open_port/2)时,您将以字节流的形式发送/接收数据.
要通过流发送任何有用的信息,您需要将其划分为通常命名为消息的块.消息格式定义如何从字节流中提取消息.例如,使用类型 - 长度 - 值(TLV)编码,您可以发送标有类型的不同长度的值.
在ErlPort中,它的工作原理如下:
{packet, N}以便通过此端口发送的所有二进制消息都以其长度开头,以N字节(长度值编码)发送.packet传递给open_port/2相同的值(packet=1默认情况下).