a A string with arbitrary binary data, will be null padded.
A A text (ASCII) string, will be space padded.
Z A null-terminated (ASCIZ) string, will be null padded.
####
print length pack '(A2)*', 'fr','ed','x';;
6
print unpack 'C*', pack '(A2)*', 'fr','ed','x';;
102 114 101 100 120 32
print length pack '(a2)*', 'fr','ed','x';;
6
print unpack 'C*', pack '(a2)*', 'fr','ed','x';;
102 114 101 100 120 0
print length pack '(Z2)*', 'fr','ed','x';;
6
print unpack 'C*', pack '(Z2)*', 'fr','ed','x';;
102 0 101 0 120 0 ## Note! the 'r' & 'd' characters have been thrown away? Another bug?
##
##
printf "'%s'\n", join"'", unpack '(A2)*', 'fredx';;
'fr'ed'x'
printf "'%s'\n", join"'", unpack '(a2)*', 'fredx';;
'fr'ed'x'
printf "'%s'\n", join"'", unpack '(Z2)*', 'fredx';;
'fr'ed'x'