void _24to32_2( SV *packed ) { IS_VARS; char *pp = SvPVX( packed ); int i; IS_RESET; for( i=0; i<24; i+=3 ) { unsigned int n = _byteswap_ulong( *(unsigned long*)&pp[ i -1 ] ); IS_PUSHUV( ( n & 0xfc0000 ) >> 18 ); IS_PUSHUV( ( n & 0x03f000 ) >> 12 ); IS_PUSHUV( ( n & 0x000fc0 ) >> 6 ); IS_PUSHUV( ( n & 0x00003f ) ); } IS_DONE; return; }