写入perl数组的一个范围



我有一个32位数组@data想要为[16]到[31]写零有没有更短的方法可以做到这一点?

splice(@data,16,16,(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))

您可以使用数组切片而不是splice来同时为一系列索引分配列表:

@data[16..31] = (0) x 16;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

可以写成

( 0 ) x 16

所以,

splice( @data, 16, 16, ( 0 ) x 16 );

也就是说,使用数组来表示位是很奇怪的。我们通常会使用一个数字。

为了只保留最低有效的16位,我们将使用

$data &= 0xFFFF;

为了只保留32中最有效的16位,我们将使用

$data &= 0xFFFF0000;

$data &= ~0xFFFF;

最新更新