2010-02-13 63 views
5

考虑这个片断:如何在Perl中打包一个int为32位的big endian?

use strict; 
use warnings; 

my $data = "1"; 
my $packed = pack("I",$data); 
open(my $file,">","test.bin") || die "error $!\n"; 
binmode $file; 
print $file $packed; 

的事情是,试图从另一种语言读它,这似乎是小端。有没有模板参数可以让我把它写成大端?阅读时,我想避免做额外的工作。

+0

你的意思是32 *位*或32 *字节*? – 2010-02-14 08:29:06

+0

位。对于那个很抱歉。 – Geo 2010-02-14 10:50:51

回答

3

的解决方案是N模板。

my $packed = pack "N", $data; 

见的所有包选项列表中pack文档。

+2

从Perl 5.10开始,您也可以使用字节顺序修饰符('<' and '>')。这里没有必要,但它们是四字和浮点的天赐之物。 – 2010-02-13 23:52:57

+0

好的提示,谢谢!似乎'I>'也能产生正确的结果。 – Geo 2010-02-14 00:23:18

相关问题