我有一个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;