diff --git a/pe/chapter7.erl b/pe/chapter7.erl index 6b31d97..5922d37 100644 --- a/pe/chapter7.erl +++ b/pe/chapter7.erl @@ -13,14 +13,14 @@ breverse(Bin) -> %% Need to packetize term_to_packet(Term) -> - BinaryTerm = erlang:term_to_binary(Term), - Length = erlang:byte_size(BinaryTerm), + BinaryTerm = term_to_binary(Term), + Length = byte_size(BinaryTerm), <>. %% 3. Write the inverse function packet_to_term(Packet) -> Term that %% is the inverse of the previous function. packet_to_term(<>) -> - erlang:binary_to_term(BinaryTerm). + binary_to_term(BinaryTerm). packet_test(Term) -> Term = packet_to_term(term_to_packet(Term)). @@ -34,7 +34,8 @@ test() -> packet_test(Squared), packet_test(32), packet_test(<<"Goodbye, Joe.">>), - <<0:7, 1:1>> = reverse_byte(<<1:1, 0:7>>). + <<0:7, 1:1>> = reverse_byte(<<1:1, 0:7>>), + <<246, 54, 54, 166, 22>> = reverse_bits(<<"hello">>). %% 5. Write a function to reverse the bits in a binary. reverse_byte(<>) -> @@ -43,10 +44,8 @@ reverse_byte(<<>>) -> <<>>. reverse_bitlist([]) -> []; reverse_bitlist([H|T]) -> - [reverse_byte(H) || reverse_bitlist(T)]. + [reverse_byte(<>) | reverse_bitlist(T)]. reverse_bits(Binary) -> - erlang:list_to_binary(reverse_bitlist(erlang:binary_to_list(Binary))). - - - + ReversedBits = reverse_bitlist(binary_to_list(Binary)), + erlang:list_to_binary(lists:reverse(ReversedBits)).