在 Erlang 中如何将字符串转换为二进制值?
在 Erlang 中,如何将 string
转换为 binary
值?
String = "Hello"
%% should be
Binary = <<"Hello">>
In Erlang how do I convert a string
to a binary
value?
String = "Hello"
%% should be
Binary = <<"Hello">>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Erlang 中,字符串表示为整数列表。因此,您可以使用
list_to_binary
(内置函数,又名 BIF)。这是我在 Erlang 控制台中运行的一个示例(以erl
开头):In Erlang strings are represented as a list of integers. You can therefore use the
list_to_binary
(built-in-function, aka BIF). Here is an example I ran in the Erlang console (started witherl
):unicode (utf-8/16/32) 字符集需要更多位数来表示长度大于 1 字节的字符:
这就是为什么上面的调用对于任何字节值>都失败的原因。 255(一个字节可以容纳的信息限制,足以满足 IS0-8859/ASCII/Latin1 的要求)
要正确处理 unicode 字符,您需要使用
unicode:characters_to_binary() R1[(N>3 )]
相反,它可以处理 Latin1 和 unicode 编码。
华泰...
the unicode (utf-8/16/32) character set needs more number of bits to express characters that are greater than 1-byte in length:
this is why the above call failed for any byte value > 255 (the limit of information that a byte can hold, and which is sufficient for IS0-8859/ASCII/Latin1)
to correctly handle unicode characters you'd need to use
unicode:characters_to_binary() R1[(N>3)]
instead, which can handle both Latin1 AND unicode encoding.
HTH ...