Perl 编程/关键字/vec
外观
该函数vec将EXPRESSION中的字符串视为一个位向量,其中元素宽度为BITS,并返回由OFFSET指定的元素的值,该值是一个无符号整数。BITS必须是 2 的幂,范围从 1 到 32(或 64,如果平台支持)。
如果BITS为 8,则输入字符串的元素为字节。
如果BITS为 16 或更大,则输入字符串的字节被分组为大小为BITS/8 的块。每个组被转换为一个数字,就像使用 pack()/unpack() 一样,使用大端格式n /N(类似于BITS==64).
如果BITS为4或更小,则字符串被分解为字节,然后每个字节的位被分解为 8/BITS组。字节的位以小端方式编号,如0x01, 0x02, 0x04, 0x08, 0x10等等
vec也可以被赋值,在这种情况下,需要使用括号来给出表达式正确的优先级。请参见下面的示例。
如果所选元素位于字符串之外,则返回 0。如果写入字符串末尾的元素,Perl 将首先使用足够多的零字节扩展字符串。负数OFFSET被视为错误。
vec忽略 UTF-8 标志,如果碰巧字符串在内部被编码为 UTF-8,它会对内部字节字符串进行操作。
vec EXPRESSION, OFFSET, BITS
vec($largeimage, $max_x*$x + $y, 8) = 3;