如何在Erlang中将二进制元组列表转换为字符串形式?
把Erlang二进制元组列表转换为对应字符串形式
这事儿在Erlang里其实挺简单的,直接用标准库的格式化工具就能搞定,完全不需要自己手动拼接字符串。
这里给你一个直接可用的实现:
-module(tuple_to_string). -export([convert/0]). convert() -> % 你的原始数据结构 Data = [{<<"Location">>, [{<<"lat">>, 123456}, {<<"lng">>, 123456}]}], % 用~p格式化语法生成对应字符串,再扁平化列表 FormattedString = lists:flatten(io_lib:format("~p", [Data])), % 输出验证结果 io:format("转换结果: ~s~n", [FormattedString]), FormattedString.
关键细节解释:
io_lib:format("~p", [Data]):~p是Erlang的漂亮打印格式化符号,它会严格按照Erlang的语法规则输出数据结构,包括二进制值的<<>>表示,正好匹配你要的格式。这个函数返回的是一个深度嵌套的字符列表。lists:flatten/1:把深度嵌套的字符列表转成扁平的字符列表(也就是Erlang里的字符串类型),方便后续使用或直接输出。
如果你需要的是二进制类型的字符串(而非字符列表),只需要再加一步转换:
BinaryResult = list_to_binary(FormattedString),
运行这个模块的convert/0函数,你会得到完全符合预期的结果:[{<<"Location">>,[{<<"lat">>,123456},{<<"lng">>,123456}]}]。
内容的提问来源于stack exchange,提问作者ankit savaliya
相关产品推荐
相关产品推荐

