use strict; use Inline C => <<'__C_CODE__'; SV* b2i(int value) { AV *out; int i; out = (AV *)sv_2mortal((SV *)newAV()); i = 0; while (value > 0) { if (value & 1) av_push(out, newSViv(i)); ++i; value >>= 1; } return((SV *)newRV((SV *)out)); } __C_CODE__ my $ridx = b2i(12345); print "@$ridx\n";