【问题标题】:In Erlang how do I convert a String to a binary value?在 Erlang 中,如何将字符串转换为二进制值?
【发布时间】:2019-11-09 02:30:53
【问题描述】:

在 Erlang 中,如何将 string 转换为 binary 值?

String = "Hello"
%% should be
Binary = <<"Hello">>

【问题讨论】:

    标签: erlang


    【解决方案1】:

    在 Erlang 中,字符串表示为整数列表。因此,您可以使用list_to_binary(内置函数,又名 BIF)。这是我在 Erlang 控制台中运行的一个示例(以 erl 开头):

    1> list_to_binary("hello world").
    <<"hello world">>
    

    【讨论】:

    • 谢谢。我的大脑没有工作,我一直在做“string_to_binary”,拼命地试图证明文档、谷歌和常识是错误的。 :)
    • 我也经常输入string_to_binary,但编译器一直提醒我没有这样的东西;)
    • 您还需要记住当字符串包含非 ASCII 字符时会发生什么。在这种情况下,unicode 模块中的某些函数可能比 list_to_binary 更合适。
    • 仅当字符串包含 1 字节字符时才有效,否则为 81> list_to_binary("hello брбр")。 ** 异常错误:函数 list_to_binary/1 中的错误参数称为 list_to_binary([104,101,108,108,111,32,1073,1088,1073,1088]) 82>
    【解决方案2】:

    unicode (utf-8/16/32) 字符集需要更多位数来表示长度大于 1 字节的字符: 这就是为什么上述调用对于任何大于 255 的字节值都失败(一个字节可以容纳的信息的限制,对于 IS0-8859/ASCII/Latin1 来说已经足够了)

    要正确处理您需要使用的 unicode 字符

    unicode:characters_to_binary() R1[(N&gt;3)]

    相反,它可以同时处理 Latin1 和 unicode 编码。

    HTH ...

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 2017-06-09
      • 2012-03-14
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2013-09-19
      • 2012-01-06
      相关资源
      最近更新 更多