2011-05-23 24 views

回答

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. 
+0

謝謝!你能告訴我什麼是「二進制/二進制,0:(N * 8)」是什麼意思? – why 2011-05-23 11:15:17

+0

<<0:(N*8)>>是一個寬度爲N * 8位= N字節的0。 – kay 2011-05-23 11:36:10

相關問題