這是我的功能,當我打電話my_conv(「2312144」,10,10),它給了我「錯誤的參數」錯誤如何將一個字符串傳遞給一個函數,以後可以創建一個二進制文件?
my_conv(S, Start, End) ->
Res = <<Start:8, End:8, S:1024>>.
這是我的功能,當我打電話my_conv(「2312144」,10,10),它給了我「錯誤的參數」錯誤如何將一個字符串傳遞給一個函數,以後可以創建一個二進制文件?
my_conv(S, Start, End) ->
Res = <<Start:8, End:8, S:1024>>.
的字符串不能一個二進制表達式內使用,無需轉換。您需要使用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.
肯定!非常感謝! – why 2011-06-02 04:56:28