[erlang-questions] Padding a binary to a multiple of 4 bytes

Richard O'Keefe <>
Mon Dec 22 04:51:15 CET 2008


> How about
> 	pad_to_4(Binary) ->
> 	    case (4 - size(Binary) rem 4) rem 4
> 	      of 0 -> Binary
> 	       ; N -> <<Binary/binary, 0:(N*8)>>
> 	    end.
>
> Tested, works, doesn't copy unless it has to.

While we're at it, let's generalise:

pad_to(Width, Binary) ->
     case (Width - size(Binary) rem Width) rem Width
       of 0 -> Binary
        ; N -> <<Binary/binary, 0:(N*8)>>
     end.

Now that 64-bit machines are so very common, padding to 8
makes a lot of sense too.




More information about the erlang-questions mailing list