我使用Net::SMPP包来处理SMPP协议。 其中一个协议参数应为NULL终止字符串。 当我发送它时,我做:
my $receipted_message_id = '111111'."\0";
当我收到它时,我剥去了最后一个角色。
在Perl中使用“C String”有更好的方法吗?
答案 0 :(得分:8)
您可能需要查看pack和unpack(perldoc -f pack),特别是:
Z A null-terminated (ASCIZ) string, will be null padded.
当与需要特定二进制协议的其他系统一起工作时,这些功能是很好的,无论是零终止字符串,还是某种“网络顺序”或类似的(高端与低端)的内联。
答案 1 :(得分:4)
您可以通过简单的替换来修剪终止空值:
$receipted_message_id =~ s/\0$//;
...或者只是砍掉()最后一个字符:
chop $receipted_message_id;