如何将字符串传递给函数,以后可以创建二进制文件?

时间:2011-05-23 08:39:37

标签: erlang

这是我的功能,当我调用my_conv(“2312144”,10,10)时,它给了我“错误的参数”错误

my_conv(S, Start, End) ->
  Res = <<Start:8, End:8, S:1024>>.

1 个答案:

答案 0 :(得分:5)

如果没有转换,则不能在二进制表达式中使用字符串。您需要使用list_to_binary(S)将字符串转换为二进制文件。

我建议使用以下表达式:

my_conv(S, Start, End) ->
    list_to_binary(<<Start:8, End:8>>, S]).

(请注意list_to_binary/1实际上接受深IO列表而不仅仅是纯字符串。

如果您打算将二进制文件填充到1024字节(或1040包括换行符),则可以在以后执行此操作:

my_conv(S, Start, End) ->
    pad(1040, list_to_binary(<<Start:8, End:8>>, S])).

pad(Width, Binary) ->
    case Width = byte_size(Binary) of
        N when N =< 0 -> Binary;
        N -> <<Binary/binary, 0:(N*8)>>
    end.