Perl的unpack命令在Unix与Linux平台表现不一致的问题求助
Perl的unpack命令在Unix与Linux平台表现不一致的问题求助
我现在在Unix和Linux平台上用Perl的unpack处理二进制字符串时遇到了平台差异的问题,实在搞不懂怎么解决,想请教大家这是不是平台相关的问题?
先给大家看我的测试场景:
当二进制字符串是全零的时候:
$binaryString = "\x00\x00\x00\x00";
在Unix上执行:
$intval = unpack("i*", $binaryString);
返回的是预期的0。
但在Linux上直接跑这段代码会得到一个很大的数值,我只能通过截取最后一个字节来处理:
unpack("i*", substr($binaryString,3,1))
这样Linux上也能返回预期的0。
可问题来了,当二进制字符串是下面这种情况时:
$binaryString = "\x00\x00\x89\x9d";
Unix上返回的是正确的35229,但我之前那种只取最后一个字节的处理方式,在Linux上只返回157,我现在想让Linux也能得到35229这个正确值,该怎么处理呢?
备注:内容来源于stack exchange,提问作者user15382501
相关产品推荐
相关产品推荐

