Erlang - 模式匹配 ext_binary(),结果来自 term_to_binary()

Erlang - pattern match ext_binary(), result from term_to_binary()

大家好,Erlangers!

我想进行模式匹配并区分 term_to_binary() 的结果和常规二进制字符串,例如<<"hello :))">>.

term_to_binary() 的结果是一个类型为 ext_binary() 的字符串,但我不确定如何对其进行模式匹配,而无需模式匹配常规二进制字符串。

谢谢!

  1. 如果在当前 Erlang 版本中调用 term_to_binary(),它将以 131 字节开始,如 http://erlang.org/doc/apps/erts/erl_ext_dist.html 所示。它没有说明以前的版本号是多少(例如在添加地图之前),但我怀疑是 128 到 130。

  2. 131 不是 not a printable character in Latin1,也不是 UTF-8 中的合法起始字节。

因此 <<131, _/binary>> 应该只匹配当前的 ETF 编码条款。