pack

"a"でpackする場合、対象の文字列長が最大文字列長より短かい場合は、最大文字列長まで空白文字列ナル文字(\0)で埋められる。"a"でpackされた文字列を元に戻す場合は"A"を使えば、空白ナル文字で埋められた文字列から空白ナル文字を削除した文字列を取得できる。

$str = "abcdefg";
$max_str = 50;

# packする
$binary_str = pack("a$max_str",$str);

# 戻す

$str = unpack("A$max_str",$binary_str2);


#######################################

$str1 = "abcdefghij";
$str1_max_length = 40;

$str2 = "1234567890";
$str2_max_str = 50;

# packする
$binary_str2 = pack("a${str1_max_str}a${str2_max_str}",$str1,$str2);

# 戻す
$str = unpack("A${str1_max_xtr}A${str2_max_str}",$binary_str2);