这个问题就解决了。非常感谢各位^^
我的问题和我正在使用的解决方案如下所述。
原问题:--- 2013-05-08 编辑
我知道我可以像这样通过 C++ 完成这项任务:
struct { /* File Header */
int a;
int b;
short c;
short d;
} PPPhdr;
PPPhdr head;
fstream fst;
fst.open("file.txt", ios_base::in|ios_base::binary);
fst.read((char*)&head, sizeof(PPPhdr));
SwapInt32(&(head.a));
SwapInt32(&(head.b));
SwapShort(&(head.c));
SwapShort(&(head.d));
所以,基本上 SwapInt32 会这样做:
0x89346512 -> 0x12653489
SwapShort 会这样做:
0x3487 -> 0x8734
现在我的问题是,我怎样才能在 Perl 中做到这一点?
我的方式:
open FH, "<file.txt" or die print "Cannot open file\n";
binmode FH;
read FH, $temp, 12;
($a,$b) = unpack("N2", substr($temp,0,8));
($c,$d) = unpack("n2", substr($temp,8,4));
close(FH);
print "$a\n$b\n$c\n$d\n";