The exercises for chapter 7 are quite tricky, but finally I finished them
Exercise 7
-module(ex7).
-export([reverse_binary/1,term_to_packet/1, packet_to_term/1, test/0, reverse_bits/1]).
% 7.1
reverse_binary(Binary) ->
reverse_binary(Binary, <<>>).
reverse_binary(<<>>, Binary) ->
Binary;
reverse_binary(<<Head, Tail/binary>>, Accumulator) ->
reverse_binary(Tail, <<Head, Accumulator/binary>>).
% 7.2
term_to_packet(Term) ->
Binary = term_to_binary(Term),
N = byte_size(Binary),
<<N:4/unit:8, Binary:N/binary>>.
% 7.3
packet_to_term(Packet) ->
<<N:4/unit:8, Binary:N/binary>> = Packet,
binary_to_term(Binary).
% 7.4
test() ->
P = term_to_packet("DevTalk"),
"DevTalk" = packet_to_term(P).
% 7.5
reverse_bits(Binary) ->
Bitlist = [ X || <<X:1>> <= Binary],
Reversedlist = lists:reverse(Bitlist),
<< <<X:1>> || X <- Reversedlist >>.
especially 7.2 took me a while…