我有一个包含以下内容的结构:
struct mystruct{
int id[10];
char text[40];
unsigned short int len;
};
Run Code Online (Sandbox Code Playgroud)
而我正试图将它解压缩到一行,如下所示:
my(@ids,$text,$length) = unpack("N10C40n",$buff) ;
Run Code Online (Sandbox Code Playgroud)
但是一切都是第一个数组(@ids),我已经尝试了模板" N10 C40 n
"和" (N10)(C40)(n)
"所以,要么这不能完成,要么我没有使用正确的模板字符串.
注意:我正在使用大端数据.
任何提示?
在列表赋值中,第一个数组或散列将吃掉所有内容(它将如何知道停止的位置?).试试这个:
my @unpacked = unpack "N10Z40n", $buff;
my @ids = @unpacked[0 .. 9];
my ($text, $length) = @unpacked[10, 11];
Run Code Online (Sandbox Code Playgroud)
你也可以说
my @ids;
(@ids[0 .. 9], my ($text, $length)) = unpack "N10Z40n", $buff;
Run Code Online (Sandbox Code Playgroud)