你把你的术语弄糊涂了。任何语言中的字符串都是对应于人类可读字符的整数值序列。无论值的表示是二进制还是列表都无关紧要,因为它们包含的数据在技术上都是字符串。
话虽如此,您在第一组指令中将二进制字符串转换为列表字符串。要将列表转换为二进制,您可以调用erlang:list_to_binary/1
,或者erlang:iolist_to_binary/1
如果您的列表不平坦。例如:
BinString = <<"this\nis\na\nstring">>.
ListString = "this\nis\na\nstring" = binary_to_list(BinString).
Words = ["this", "is", "a", "string"] = string:tokens(ListString, "\n").
<<"thisisastring">> = iolist_to_binary(Words).
Rejoined = "this\r\nis\r\na\r\nstring" = string:join(Words, "\r\n").
BinAgain = <<"this\r\nis\r\na\r\nstring">> = list_to_binary(Rejoined).
供您参考,string
模块总是需要一个平面列表(例如,“这是一个字符串”,但不是 [“this”,“is”,“a”,“string”]),除了string:join
,它需要一个列表扁弦。