【发布时间】:2019-04-11 17:15:50
【问题描述】:
我正在尝试解码具有可变长度和选项的帧(例如以太网帧中的 TLV) 为了做到这一点,我正在考虑做一个有趣的递归函数:
fun (Fields, Bin) ->
Parse =
fun (P, F, <<Length, Rest/binary>>) ->
P(P, F#{first => Length}, Rest)
end,
Parse(Parse, Fields, Bin)
end.
所以 Bin 是输入帧,例如:40 02 12 45 01 50
所以第一个字节是帧的类型,02是后面数据的长度12 45,01是后面数据的长度50等等。
但是我的函数使用这个有趣的技巧并没有像预期的那样工作
我正在返回 JSON 对象,因为它是通过 MQTT 发送的。
【问题讨论】: