EXTEND(SP,17);
But then pushing a single scalar
And that scalar is an SvPV that points to a C-string:
If you want to push that string as 16 (no point in return the null in a searate scalar) individual unisgned values, you will need to loop over the string extracting the byte values, creating SvUV's from each one and then push each onto the stack.
Something like:
EXTEND( SP, 16 );
for( i=0; i < 16; ++i )
PUSHs( sv_2mortal( newSVuv( array[ i ] ) ) );