A
не имеет размера 80 байт, что явно не соответствует A:80/binary
в первом случае.
1> A = <<"hello">>.
<<"hello">>
2> B = <<A/binary, 100:8>>.
<<"hellod">>
3> Pad = 80 - size(A), C = <<A/binary, 0:Pad/unit:8, 100:8>>.
<<104,101,108,108,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,...>>
<<"hello">>
- синтаксический сахар для <<$h,$e,$l,$l,$o>>
.Битовое синтаксическое выражение предполагает спецификацию типа 8/integer,unsigned,big,unit:1
по умолчанию.A
не является целым числом, поэтому <<A>>
вызывает badarg
исключение во втором случае.